Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [htaccess] 404 bez *.htm
lukash82
post
Post #1





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


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, Ł.
Go to the top of the page
+Quote Post
kapslokk
post
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


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 (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
lukash82
post
Post #3





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


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...:/
Go to the top of the page
+Quote Post
kapslokk
post
Post #4





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


zrob header location na http://domena.pl/404 a nie na 404.

Ten post edytował kapslokk 15.09.2015, 10:10:14
Go to the top of the page
+Quote Post
lukash82
post
Post #5





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Choć długo nie chciało ale zaczęło działać. Czasem ten htaccess mnie zadziwia... Dzięki za pomoc.
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: 3.10.2025 - 22:12