Autor Zpráva
kohl
Profil
Ahoj,
mám soubor .htaccess ve složce http://127.0.0.1/Online%20katalog/ a potřebuji poradit s přesměrováním z

http://127.0.0.1/Online%20katalog/suggest.php?search=a
na
http://127.0.0.1/Online%20katalog/libraries/suggest.php?search=a

a abych mohl /Online%20katalog/ složku přejmenovat nebo změnit cestu a stále to fungovalo.

Nevím, jak na to, děkuji předem za radu.
joe
Profil
Zkus to takhle

RewriteRule ^suggest.php?search=(.*)$ libraries/suggest.php?search=$1
Kajman
Profil
Bude tam potřeba flag [QSA]
kohl
Profil
Bohužel mi to nefunguje, mám to zapsaný takhle:

RewriteEngine on
RewriteRule ^suggest.php?search=(.*)$ libraries/suggest.php?search=$1

když jsem tam přidal [QSA] taky to nefungovalo a jakou funkci plní tento znak ^
Kajman
Profil
V RewriteRule se nedá testovat část za otazníkem.

Zkuste jednoduše

RewriteRule ^suggest\.php$ libraries/suggest.php [R,NE,L]
kohl
Profil
Mnohokrát děkuji, funguje to dobře.

Chtěl jsem to vyzkoušet na chyby:

ErrorDocument 404  /Online%20katalog/libraries/error.php?error=404

na

ErrorDocument 404 ^/libraries/error.php?error=404

ale nejde to ,asi jsem nepochopil jak ^ funguje.
joe
Profil
Kajman:
V RewriteRule se nedá testovat část za otazníkem.
Díky za informaci, to jsem ani nevěděl (nikdy nepotřeboval) a koukám, že jsem v tém svém kódu zpackal co se dalo. (třeba escapování aj.)

kohl:
asi jsem nepochopil jak ^ funguje.
Znak ^ značí v RE (regulárním výrazu) začátek řetězce, důvod proč to tvé nefunguje a je vlastně i nelogické je ten, že píšeš RE místo URL adresy (což máš v prvním případě, kdy to funguje)
kohl
Profil
Děkuji za vysvětlení, mě vůbec nedošlo že to jsou regulární výrazy.

A jak bych měl řešit cestu, tak aby fungovala i když přejmenuju složku Online%20katalog:

ErrorDocument 404  /Online%20katalog/libraries/error.php?error=404
Kajman
Profil
Pokud to chcete jen pro onu složku, tak to nastavte až v .htaccess v něm uloženém. Pokud to chcete pro celý web, musíte to s každým přejmenováním složky opravit.
kohl
Profil
Děkuji za ujasnění.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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