Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][inne] mod_rewrite - przyjazne linki, a podkatalog
desavil
post
Post #1





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


Witam!

Mam taką regułkę mod_rewrite w katalogu głównym mojej strony:
  1. RewriteEngine On
  2. Options -Indexes
  3. RewriteBase /
  4. RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
  5. RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
  6. RewriteRule ^(.*)/$ http://%{HTTP_HOST}/$1 [R=301]
  7.  
  8. RewriteRule ^([a-z0-9\-\_]+)/?$ index.php?page=$1

Działa ona w miarę dobrze, ale nie do końca. Problem polega na tym, że gdy zrobię sobie, np. katalog o nazwie: panel_admina i umieszczę w nim index.php, a następnie wejdę na stronę: mojastrona.pl/panel_admina, to zostaję przekierowany na: mojastrona.pl/panel_admina?page=panel_admina, a dodatkowo przeglądarka wyświetla błąd: Błąd 310 (net::ERR_TOO_MANY_REDIRECTS): Zbyt wiele przekierowań.

W jaki sposób mógłbym to ustawić, abym mógł normalnie przeglądać strony w podkatalogach?

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
klocu
post
Post #2





Grupa: Zarejestrowani
Postów: 291
Pomógł: 45
Dołączył: 21.08.2007

Ostrzeżenie: (0%)
-----


Spróbuj:
Kod
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Go to the top of the page
+Quote Post
desavil
post
Post #3





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


Niestety, w różnych miejscach to dodawałem, ale efekt ciągle ten sam. Nawet wyczyściłem ciasteczka przeglądarki.
Go to the top of the page
+Quote Post
klocu
post
Post #4





Grupa: Zarejestrowani
Postów: 291
Pomógł: 45
Dołączył: 21.08.2007

Ostrzeżenie: (0%)
-----


Powiem szczerze, że bazując na Kohanie udało mi się zrobić poprawnego "lekkiego" (bez www) redirecta.

Kod
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule .* index.php/$0 [PT]


A w twoim kodzie nie daje mi spokoju linijka:
Kod
RewriteRule ^(.*)/$ http://%{HTTP_HOST}/$1 [R=301]


O ile pierwsze dwie robią dokładnie to samo co moje, to tej trzeciej sobie nie przypominam żebym kiedykolwiek ją stosował.
I że tak powiem na podrzuconym powyższym przykładzie - u mnie działa co trzeba - realne katalogi - tak, realne pliki - tak, reszta - via index.php.
Go to the top of the page
+Quote Post
desavil
post
Post #5





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


Kod
RewriteRule ^(.*)/$ http://%{HTTP_HOST}/$1 [R=301]

Ta linijka służy do tego, aby linki były jednolite, czyli np. jak ktoś wpisze: http://strona.pl/podstrona to jest dobrze, ale jak wpisze, np. http://strona.pl/podstrona/ to ostatni slash jest usuwany.

Ten post edytował desavil 12.08.2012, 12:54:45
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 09:55