Autor Zpráva
Tomas9857
Profil *
Dobrý deň,

chcel by som pomocou mod rewrite dosiahnuť to aby v prípade že zadám do prehliadača adresu

www.example.com/home.html - načítal stránku home.php
www.example.com/home/view.html - načítal stránku home.php&mod=view
www.example.com/home/1/view.html - načítal stránku home.php&mod=view&id=1

to viem tak nejak spraviť pomocou

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)\.html$ /home.php?mod=$1 [L]
RewriteRule ^([^/]*)/([^/]*)\.html$ /home.php?mod=$1&action=$2 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)\.html$ /home.php?mod=$1&id=$2&action=$3 [L]

Toto funguje, tak ako si predstavujem. Teraz to chcem ale nejako rozšíriť a súbor generovať dynamicky podľa adresáru, teda aby to fungovalo rovnako ak miesto home.html dám napr. article.html, alebo categories.html alebo anything.html (samozrejme pokiaľ ten súbor existuje).

Skúšal som to viacerými spôsobami a nejak sa mi to nedarí, väčšinou mi to len rozhasí to pôvodné čo fungovalo. Nemáte niekto nejaký nápad ako na to?

ďakujem.


Asi by to mohlo byť takto?
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)\.html$ /$1.php [L]
RewriteRule ^([^/]*)/([^/]*)\.html$ /$1.php?mod=$2 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)\.html$ /$1.php?mod=$2&action=$3 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /$1.php?mod=$2&action=$3&id=$4 [L]
Kajman
Profil
Asi ano. Jen ty podmínky RewriteCond patří jen k prvnímu následujícímu RewriteRule. Ale pokud tam nemáte skutečné .html soubory, co mají mít přednost, tak to ničemu nevadí.
Tomas9857
Profil *
No tak reálne html súbory tam nie sú a nebudú, podľa prvých testov sa to chová tak ako si predstavujem, tak snáď to bude ok :)

ďakujem.
Tomas9857
Profil *
Doplňková otázka..

Toto čo som vymyslel funguje pokiaľ je to v roote, tj. ak veci riešim napr. na www.example.com. Čo ak by som toto celé chcel vložiť do podadresára? napr. www.example.com/test/
Kajman
Profil
Když do složky test vložíte i .htaccess s uvedeným obsahem, tak to nefunguje?

Pomůže odstranění lomítka před $1?

Pomůže deklarace
RewriteBase /test/
na druhém řádku?
Tomas9857
Profil *
Kajman:
Díky RewriteBase pomohlo

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0