Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [htaccess] 404 bez *.htm
Forum PHP.pl > Forum > Przedszkole
lukash82
Witam,

Mam na stronie obsługę błędu 404. Jeśli dany zasób nie istnieje to robię: header("Location: 404.htm");

I potem w htaccess:
[htaccess]
ErrorDocument 404.htm$ http://domena.pl/404.htm
RewriteRule ^404.htm$ 404.php [L]
[/htaccess]

I to działa w porządku.

Jednak chciałbym to zmodyfikować tak aby nie było rozszerzenia *.htm bo wszystkie podstrony serwisu też nie mają takiego rozszerzenia. Usuwając z powyższego kodu *.htm pojawia się pętla przekierowań. Mogę liczyć na jakąś podpowiedź gdzie robię błąd? Pozdrawiam, Ł.
kapslokk
Zrobiłem na szybko coś takiego:

Kod
RewriteEngine On

ErrorDocument 404 http://127.0.0.1/test/404
RewriteRule ^404$ test.php [L]

I działa. Przynajmniej u mnie biggrin.gif
lukash82
Hmmm... Rzeczywiście, dla "pierwszego" poziomu działa. Jednak dla kolejnych podstron już niestety nie. Np.

Dla domena.pl/fake > jest ok

Dla domena.pl/podstrona/fake > nie działa, ładuje się domena.pl/podstrona/404 i pokazuje "pętlę przekierowań"
Dla domena.pl/podstrona/podstrona/fake > nie działa, ładuje się domena.pl/podstrona/podstrona/404 i pokazuje "pętlę przekierowań"

Możliwe, że jest to związane z dalszym kodem w htaccess ale nie bardzo wiem jak ten temat ugryźć:/ Tak wygląda cały htaccess

AddDefaultCharset utf-8
RewriteEngine On

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

ErrorDocument 404 http://domena.pl/404
RewriteRule ^404$ 404.php [L]

RewriteRule ^([^.]+)/([^.]+)/([^.]+)$ index.php?p1=$1&p2=$2&p3=$3 [QSA,L]
RewriteRule ^([^.]+)/([^.]+)$ index.php?p1=$1&p2=$2 [QSA,L]
RewriteRule ^([^.]+)$ index.php?p1=$1 [QSA,L]


Możnaby coś pokombinować na zasadzie:
ErrorDocument 404 http://domena.pl/.*/404
ErrorDocument 404 http://domena.pl/.*/.*/404

Ale to chyba przerost formy nad treścią. Nie czuję się mocny w wyrażeniach regularnych...:/
kapslokk
zrob header location na http://domena.pl/404 a nie na 404.
lukash82
Choć długo nie chciało ale zaczęło działać. Czasem ten htaccess mnie zadziwia... Dzięki za pomoc.
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.