Autor Zpráva
xlifer
Profil
Nevíte prosím někdo jak vyřesit tento problém, kdy chci z URL adresy odstraňovat připadně zadaný index.php ?

www.tld.cz/index.php = vstup špatně, který chci přesměrovat na:
www.tld.cz

Zkouším takové pravidlo, ale nefunguje:

RewriteRule ^index.php http://www.tld.cz/ [R=301,QSA,L]
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
xlifer
Profil
Kompletní htaccess je takto:

RewriteEngine On
RewriteBase /

RewriteRule ^index.php http://www.tld.cz/ [R=301,QSA,L]

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

RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^(.+) - [PT,L]
 
#RewriteRule  ^(.+[^/])$  $1/  [R=301,L]
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
Davex
Profil
Před první pravidlo se musí přidat podmínka proti zacyklení.

RewriteCond %{ENV:REDIRECT_STATUS} =""
xlifer
Profil
Davex:

Výborně, tohle zabralo... díky. Nevím kde se o těch direktivách ENV: dočíst více, hledal jsem, ale nikde nic pořadnýho k tomu není. Všude je k htaccessu pouze popis Rule a Cond a víc nic.
Kajman_
Profil *
xlifer:
Nevím kde se o těch direktivách ENV: dočíst více

To není direktiva. Je to určení systémové proměnné. Stačí kliknout na ono RewriteCond a přečíst si návod.
keksik
Profil *
Nějaké složité... Mě to funguje takto:

RewriteEngine on
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^tld\.cz
RewriteRule (.*) http://www.tld.cz/$1 [R=301,QSA,L]

RewriteCond %{REQUEST_URI} ^/index.php$ [NC]
RewriteRule ^(.*)$ http://www.tld.cz/ [R=301,L]

Přesměrovává URL bez www + index.php na www.tld.cz
Je to regulérní zápis? Díky za odpověď
keksik
Profil *
ještě jinak - jaký je rozdíl mezi

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

a

RewriteCond %{HTTP_HOST} ^tld\.cz$ [NC]
RewriteRule ^(.*)$ http://www.tld.cz/$1 [R]

oba příkazy přesměrují url bez www na url s www správně...
respektivě který z nich je správný?
Davex
Profil
keksik:
respektivě který z nich je správný?
Jestliže oba dělají za stejných okolností stejnou věc a přesměrují dle očekávání, tak se nedá říct, který z nich je špatně.

Když by se to vzalo kolem a kolem, tak úplně správně není ani jeden.

1) nejsou univerzální - po umístění na jinou doménu se musí přepisovat jméno domény
2) v regulárních výrazech je vhodné označovat začátek a konec
3) mělo by se přesměrovávat s příznakem [NE], kdyby náhodou někdo používal parametry s diakritikou v adrese

Vaše odpověď

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: