| Autor | Zpráva | ||
|---|---|---|---|
| mata.lan Profil * |
#1 · Zasláno: 5. 2. 2009, 01:48:54
Mám web, kde používám jednoduchou variantu hezkých url. Z .htaccess odešlu do php část url, tam pak pomocí ní vytáhnu z databáze danou stránku a zobrazím.
.htaccess v rootu RewriteEngine On
RewriteBase /_test
RewriteCond %{HTTP_HOST} ^dax.cz
RewriteRule (.*) http://www.dax.cz/$1 [R=301,QSA]
RewriteRule ^([^\.]+).*$ index.php?str=$1 [L,QSA]Problém ale nastává uvnitř složky admin. Po čase (asi přidáním kousku nějakého kodu) již funkční systém hezkých url adres přestal poslouchat a nevpustí mě do složky admin. Pokud do adminu vložím modeRewrite Off, tak se zobrazí 403, pokud tam nevložím nic, přesměruje mě do rootu. Vymýšlel jsem spoustu variant a motal jsem všechno do sebe a teď jsem momentálně ve stavu, kdy mi přesměrování nefunguje vůbec. Jde to nějak snadno vyřešit? Napadlo mě například v htaccess v rootu všem 404 podstrčit obsah generovaný v php z url adresy a případné skutečně chybějící soubory pak označovat chybou z hlavičky v php - ale nevím. Zatím mi to fungovalo tak, jak jsem popsal nahoře. V databázi mám v jednom sloupečku v tabulce upravené seo tvary názvů a z těch pak vybírám daný obsah. Stránek mám kolem 33000 (jde o webshop). Jak by jste to řešili vy? |
||
| Nox Profil |
#2 · Zasláno: 5. 2. 2009, 08:56:26
Nejsem úplně mod_rewrite profík, ale nevidím tu nic, co by mělo způsobit znefunkčnění admina...nemůže to dělat nějaký php kód?
"asi přidáním kousku nějakého kódu" - ten by chtělo najít :) |
||
| mata.lan Profil * |
#3 · Zasláno: 5. 2. 2009, 18:23:04
Nakonec to zřejmě bylo chybou v kodu... ale opět jsem to vyřešil ne moc vhodným způsobem - pokus/omyl tak dlouho, dokud to nezačlo fungovat.
htaccess mám teď takovýto:
RewriteEngine On
RewriteBase /_test
RewriteCond %{HTTP_HOST} ^dax.cz
RewriteRule (.*) http://www.dax.cz/$1 [R=301,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond $0 !^(favicon\.ico|robots\.txt|img(/.*)?|admin)$
RewriteRule ^([^\.]+)[\.]{1}.+$ index.php?c=s&str=$1 [L,QSA]
RewriteRule ^([^\.]+).*$ index.php?str=$1 [L,QSA]výhodu má scrip v tom, že testuje existenci souboru, než jej nahradí, takže v případě souborů a adresářů, co existují (favicon, admin...) se adresa nepřepisuje. Do scriptu pak posílám str bez koncovky a ještě proměnnou, která určí, zda jde o soubor či adresář |
||
|
Časová prodleva: 17 let
|
|||
0