Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno HTACCESS - konfigurace pravidla

Dobrý den,

mám základní root serveru:

http://127.0.0.1:8080/

A pak mám podadresář třeba rezervace:

http://127.0.0.1:8080/rezervace

mám napsáno následující pravidlo v .htaccess (v adresáři rezervace)


RewriteEngine On

RewriteCond %{REQUEST_URI} ^/system.*
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?/$1 [L]


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

A výsledkem je to, že když zadám do prohlížeče:
http://127.0.0.1:8080/rezervace/index.php

Tak mě vykopne o úroveň zpět na:
http://127.0.0.1:8080/index.php

Mám tam něco špatně ?
dík

Předmět Autor Datum
A můžeš říct, co ty tvé rewrite rules mají podle tebe dělat? Podle mých relativně chabých znalostí a…
touchwood 01.09.2022 14:01
touchwood
Ok. Díky za odpověď. Moje znalosti rewrite rules nejsou o nic asi větší než ty tvoje. Tímto se zabý…
Flash_Gordon 01.09.2022 14:09
Flash_Gordon
Protože všechny moderní prohlížeče cachují pravidla !!! IMHO prohlížeč .httaccess nedostane, je to…
Rce 01.09.2022 22:09
Rce
Pokud vrátí HTTP kód 301, tak to prohlížeč opravdu cachuje. Ten kód totiž znamená Moved Permanently,… poslední
Wikan 01.09.2022 22:24
Wikan

A můžeš říct, co ty tvé rewrite rules mají podle tebe dělat? Podle mých relativně chabých znalostí apáče:

první pár řeší přesměrování pro URI začínající "/system.*" a v případě aktivace ukončí hledání stringů k přepisu. Divné, ale IMHO nic nehrotící.

druhá trojička řeší neexistující fyzické soubory a složky s redirekcí na index.php a v případě aktivace ukončí hledání stringů k přepisu (zde to IMHO máš špatně, protože request_filename kontroluje soubory na lokálním disku, v lokálním FS, s lokálními cestami - zkoušel sis, co ti z té proměnné leze?)

ten poslední pár řeší redirekt pro všechny hostitele co nezačínají "www" na URN, který se skládá z "/rezervace/"+původní URN. Tady by se měla dít většina přepisů, ale řekl bych, že k tomu nikdy nedojde, kvůli druhému setu podmínek a přepisu.

Podle mě ti to začne fungovat, když zakomentuješ tu prostřední trojičku.

edit: tady máš k tomu počtení: https://serverfault.com/questions/1024920/whats-the-difference-between-request-filename-and-request-uri-in-apache-configu
edit2: a ten poslední máš také špatně. Přidává "/rezervace/" zcela bezpodmínečně, takže na již existující /rezerveace/index.php nalepí ještě jednou "/rezervace", takže z toho vypadne: /rezervace/rezervace/index.php

BTW, vždycky bys měl začít logem. error.log a access.log ti řeknou nejvíc.

Ok. Díky za odpověď.

Moje znalosti rewrite rules nejsou o nic asi větší než ty tvoje.
Tímto se zabývám taky jen když musím.

Teď jsem to nějak pořešil už.

Hlavní, co k tomu mohu dodat:
Strašně blbě se to ladí.
Po nějaké době jsem zjistil, že mé veškeré snahy jdou vniveč.
Protože všechny moderní prohlížeče cachují pravidla !!!

Takže jakmile poprve toto pravidlo se aplikuje, tak na další změny prohlížeč nereaguje !!!

Vyřešil jsem to tak, že jsem soubor vždycky přesunul a spustil to bez něho.
Nasledně jsem provedl změny a zase ho tam dosadil.

Až tento způsob mi umožnil odladit tato pravidla.

Jak píšu, opravdu blbě se to ladí, protože restart prohlížeče či Apache na to nemá vliv.

Hlavně ale že to jede už.

Zpět do poradny Odpovědět na původní otázku Nahoru