Autor | Zpráva | ||
---|---|---|---|
kujeba Profil |
Dobrý den,
mám htaccess tohohle znění: #MOD REWRITE RewriteEngine on RewriteCond %{HTTP_HOST} ^domain.cz RewriteRule ^(.*) http://www.domain.cz/$1 [R=301,QSA,L] ErrorDocument 404 /index.php?page=not_found RewriteRule ^([a-zA-Z]{2})/([-_a-zA-Z0-9\/]*)/$ /index.php?lang=$1&page=$2 [L,QSA] RewriteRule ^([a-zA-Z]{2})/([-_a-zA-Z0-9\/]*).html$ /index.php?lang=$1&page=$2&html=true [L,QSA] RewriteRule ^([a-zA-Z]{2})/([-_a-zA-Z0-9\/]*).glr$ /index.php?lang=$1&page=$2&glr=true [L,QSA] RewriteRule ^([a-zA-Z]{2})/$ /index.php?lang=$1 [L,QSA] RewriteRule ^([-a-zA-Z0-9\/]*).html$ /index.php?page=$1&html=true [L,QSA] RewriteRule ^([-a-zA-Z0-9\/]*).glr$ /index.php?page=$1&glr=true [L,QSA] RewriteRule ^([-a-zA-Z0-9\/]*)/$ /index.php?page=$1 [L,QSA] RewriteCond %{QUERY_STRING} ^$ RewriteRule ^kalendar/(.+)-([^/]+)-([^/]+)$ /kalendar/?print=$3&month=$2&year=$1 [L,QSA] #RewriteCond %{QUERY_STRING} ^$ #RewriteRule ^([^/]+)/(.+)-([^/]+)-([^/]+)$ $1/?print=$4&month=$3&year=$2 [L,QSA] RewriteRule ^$ /index.php?lang=cz [L,QSA] SetOutputFilter DEFLATE SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html AddType application/octet-stream .docx .doc .pdf .xls .xlsx .ppt .pptx .zip .rar .mp3 Jedná se mi o RewriteCond %{QUERY_STRING} ^$ Pokud použiju .htaccess tak jak je výše uveden, mám na vstupu http://www.domain.cz/kalendar/2013-1-false a na výstupu: http://vyvoj.domain.cz/kalendar/?print=false&month=1&year=2013 a stránka se mi nacte Pokud ale tento RewriteRule zakomentuju a použiji ten původně zakomentovanej, mám sice na vstupu také: http://www.domain.cz/kalendar/2013-1-false a na výstupu: http://vyvoj.domain.cz/kalendar/?print=false&month=1&year=2013 (podle http://htaccess.madewithlove.be/) ovšem stránka se nenačte a oběví se HTTP 404. Může mi, prosím, někdo poradit co s tím? |
||
Kajman Profil |
#2 · Zasláno: 31. 1. 2013, 12:38:24
Zkuste dát do konkrétnější pravidlo před obecná pravidla začínající řádkem 9. Ono tam i tak asi dojde postupně ke dvěma přepisům, ale třeba to již bude tak, jak si přejete.
|
||
kujeba Profil |
#3 · Zasláno: 31. 1. 2013, 12:56:10
Nakonec pomohla následující úprava:
RewriteRule ^(*)/(.+)-([^/]+)-([^/]+)$ http://www.domain.cz/$1/?print=$4&month=$3&year=$2 [L,QSA] |
||
Kujeba Profil * |
#4 · Zasláno: 31. 1. 2013, 15:43:09
Tak zase jiná chyba. Nejprve dojde k přepisu, přestože neni splněna podmínka v rewriteRule (například při vstupu http://www.domain.cz/kalendar/), server se pokusí vypsat stránku http://www.domain.cz/kalendar/?print=&month=&year= a pak ji přepíše správnou stránkou http://www.domain.cz/kalendar/ Normální uživatel si asi ničeho nevšimne, ale FireBug řve, že je tam chyba (kupodivu dle FireBugu je v javascriptu).
Kdyz zmenim revriteRule na: RewriteRule ^kalendar/(.+)-([^/]+)-([^/]+)$ http://www.domain.cz/$1/?print=$4&month=$3&year=$2 [L,QSA] Nemůžu použít zápis s konkrétní hodnotou (kalendar), protože ta hodnota se může měnit. Neměnný zůstavá požadovaný formát pro vstup za posledním lomítkem. Tedy XXXX-X-X |
||
Davex Profil |
Kujeba:
„tak vše funguje i dle FireBugu zcela bez problémů. Proč? Poradí někdo?“ Asi proto, protože přesměrováváš jinam (uvedením absolutní cesty se nepodstrkává). V druhém případě jsou jinak naplněné proměnné $1 až $4 .
# přesměrovává na http://www.domain.cz/kalendar/?print=posledni&month=mesic&year=rok RewriteRule ^(*)/(.+)-([^/]+)-([^/]+)$ http://www.domain.cz/$1/?print=$4&month=$3&year=$2 [L,QSA] # přesměrovává na http://www.domain.cz/rok/?print=&month=posledni&year=mesic RewriteRule ^kalendar/(.+)-([^/]+)-([^/]+)$ http://www.domain.cz/$1/?print=$4&month=$3&year=$2 [L,QSA] |
||
Kujeba Profil * |
#6 · Zasláno: 1. 2. 2013, 10:21:51
Konečné (snad) řešení je následující:
RewriteCond %{REQUEST_URI} !^/?(js|storage|img|fonts)/ RewriteRule ^([a-zA-Z0-9]*)/([0-9]{4})-([0-9]*)-([a-z]+)$ /$1/?print=$4&month=$3&year=$2 [L,QSA] Tohle, zdá se, funguje opravdu tak jak má. Sice mi tu nikdo nepomoh, ale alespoň mne nasměroval kde a co hledat. Takže díky :-) Kdyby mi někdo ale byl ochoten poradit, jak jinak zapsat podmínku, že číslo může být jednomístné NEBO dvoumístné, byl bych opravdu vděčnej. Můj zápis ([0-9]*) není ideální, neboť připouští i troj a vícemístný čísla. |
||
Petr__ Profil * |
#7 · Zasláno: 1. 2. 2013, 17:41:32
Kujeba:
„Kdyby mi někdo ale byl ochoten poradit, jak jinak zapsat podmínku, že číslo může být jednomístné NEBO dvoumístné, byl bych opravdu vděčnej.“ Takto ([0-9]{1,2}) ?
|
||
Časová prodleva: 11 let
|
0