Autor | Zpráva | ||
---|---|---|---|
Taurus Profil |
Dobrého večera,
mohl bych poprosit o okomentování několika řádků? Zdá se, že fungují, ale nevím, jestli si něco nevykládám špatně. #chybova stranka ErrorDocument 404 /error404.php #odstraneni duplicity bez www RewriteEngine on RewriteCond %{HTTP_HOST} ^odemne.com RewriteRule (.*) http://www.odemne.com/$1 [R=301,QSA,L] #odstraneni index.htm, index.html, index.php RewriteRule ^(.+/)?index\.(html?|php)$ /$1 [R=301,NC,NE,L] #v pripade neuvedeni koncovky .php ji pridej (pouze ve slozce /tvorba, /zapisky, /kontakt) RewriteCond %{REQUEST_FILENAME} -f [NC,OR] RewriteCond %{REQUEST_FILENAME} -d [NC] RewriteRule .* - [L] RewriteRule ^((tvorba|zapisky|kontakt)/[\w-]+)$ /$1.php [L,QSA] Můžu vyhodit [QSA], když na stránkách nepoužívám odkazy typu stranka.html?id=pet? Ad poslední část: značí -f a -d linuxácké soubory a složky? Jsou vůbec tyto dva řádky + následující k něčemu, když po jejich odstranění nevidím rozdíl? Neošetřuje to třeba znehodnocení složek koncovkou .php nebo tak něco? Cílem bylo, abych mohl odkazovat bez .php, ale fungovalo i s .php (funguje obojí). Ještě lepší by bylo, aby se .php přesměrovalo na bez .php (i kvůli duplicitám), ale to jsem nesvedl. Šlo by nějak upravit? (Plánuju změnit odkazy v html, ale přijde mi to jen jako obcházení problému, protože pořád by fungovaly i stránky s .php.) Chybí mi ještě něco podstatného, co vyřešit? Čerpal jsem odsud: www.jakpsatweb.cz/server/mod-rewrite.html http://htaccess.all4all.cz/funkce.php Díky za pomoc. |
||
Kajman_ Profil * |
#2 · Zasláno: 14. 11. 2011, 08:58:09
QSA můžeš vyhodit, ono se stejně dělá samo, pokud v nové adrese není otazník.
NC u řádků 13 a 14 zase asi nemá význam na serverech, kde je linux - tam na velikosti písmen záleží. Ty tři řádky 13-15 říkají, pokud to je soubor (-f) nebo adresář (-d) tak nic nepřepisuj a skonči. Ale pro potřeby přesměrování z existující .php adresy na verzi bez ní, se tahle pravidla stejně nehodí a nedošlo by k tomu. A u toho posledního bych se inspiroval v hádance. # podstrneni php, pokud opravdu takovy .php soubor existuje RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^((tvorba|zapisky|kontakt)/[\w-]+)$ $1.php [L] # presmerovani na verzi bez php, pokud neni vnitrne prepsano a neni to post pozadavek RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{REQUEST_METHOD} GET RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^((tvorba|zapisky|kontakt)/[\w-]+)\.php$ $1 [L,R=301,NE] A pro testování je lepší používat status 302 a až po odladění pravidel tam dát 301. |
||
Taurus Profil |
Děkuju moc za řešení a odkaz.
Sedmý řádek jsem zkusil odstranit, protože jinak mi přesměrování nefungovalo. Odesílací formulář mail.php běží (možná je napsaný tak, že to nijak neovlivňuje, nevím). Přesto díky, že sis ho všiml a zohledňoval ho, této věci jsem se totiž taky bál. 301 jsem si asi trochu zavařil. Ve Firefoxu jsem snad jen na dobu neurčito odvařil nejnovější zápisek i když v Chrome není problém (kde jsem původně netestoval). Mazání cache zatím nepomohlo, možná příští indexace Google, možná pletu páté přes deváté… Měl jsem téma pojmenovat spíš jako „Přesměrování na adresu bez .php“. Moderátor panther: Přejmenováno.
|
||
Časová prodleva: 12 let
|
0