Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][inne] mod_rewrite - przyjazne linki, a podkatalog
Forum PHP.pl > Forum > Przedszkole
desavil
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.
klocu
Spróbuj:
Kod
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
desavil
Niestety, w różnych miejscach to dodawałem, ale efekt ciągle ten sam. Nawet wyczyściłem ciasteczka przeglądarki.
klocu
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.
desavil
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.