Autor | Zpráva | ||
---|---|---|---|
Domxxx Profil * |
Asi je to jednoduchý, ale popravdě, raději si nechám poradit...
mám toto pravidlo: # route all requests to index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?route=$1 [L] Chtěl bych k němu přidat následující: Jestliže uživatel zadá do URL řetězec ve tvaru http://mojedomena.xyz/index/, nebo http://mojedomena.xyz/index/index/, nebo http://mojedomena.xyz/index (index se může opakovat několikrát, s nebo bez lomítka) bude přesměrován na http://mojedomena.xyz/. Děkuji, Dom Moderátor Davex: Vkládej prosím výpisy mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
Davex Profil |
#2 · Zasláno: 21. 12. 2009, 21:09:28
Před všechna původní pravidla stačí přidat
RewriteRule ^/?(index/)*index/?$ http://mojedomena.xyz/ [NC,L] |
||
Domxxx Profil * |
#3 · Zasláno: 22. 12. 2009, 13:19:24
Díky moc!
Bylo by prosím možné ještě nějak nahradit http://mojedomena.xyz/ za nějakou "konstantu", jako je např. ["HTTP_HOST"]? Děkuji předem! |
||
Kajman_ Profil * |
#4 · Zasláno: 22. 12. 2009, 14:07:40
Možná by to šlo díky RewriteBase
RewriteBase / RewriteRule ^/?(index/)*index/?$ / [NC,L,R] |
||
Domxxx Profil * |
#5 · Zasláno: 22. 12. 2009, 14:17:31
Vyzkouším :-)
Jen mi není jasný, proč je ve výrazu ^/?(index/)*index/?$ /? |
||
Kajman_ Profil * |
#6 · Zasláno: 22. 12. 2009, 14:24:31
Nejsem si jistý, ale pokud používáte rewrite pravidla přímo v konfiguraci apache, tak tam úvodní lomítko je. Pokud v .htacces, tak není. Proto asi Davex udělal nepovinné úvodní lomítko, aby nezáleželo na tom, kde to pravidlo máte.
|
||
Davex Profil |
#7 · Zasláno: 22. 12. 2009, 14:34:19
Kajman:
Přesně tak, takto je pravidlo univerzálnější a lze ho použít přímo v konfiguraci Apache, když není omezena platnost na adresář. |
||
Domxxx Profil * |
#8 · Zasláno: 22. 12. 2009, 15:45:50
Super, díky, funguje to a díky za objasnění.
Jinak, používám to v .htaccess. |
||
Domxxx Profil * |
#9 · Zasláno: 22. 12. 2009, 23:44:57
Ještě toto téma otevřu a poprosím o pomoc...
Chtěl bych na konec URL, pokud chybí, přidat "/" (v .htaccess). Lámu si s tím hlavu docela dlouho... Mám prozatím tento kód, ale nefunguje správně... Options -Indexes RewriteEngine on RewriteBase / RewriteRule ^(index/)*index/?$ / [NC,L,R] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !index.php RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ /$1/ [L,R=301] RewriteRule ^(.*)$ index.php?route=$1 [L] Problém je, že se mi do QUERY_STRING ukládá route=index.php (což bych řekl, že nastává po RewriteRule ^(.*)$ /$1/ [L,R=301] RewriteCond %{REQUEST_URI} !index.php Děkuju předem. |
||
Davex Profil |
#10 · Zasláno: 23. 12. 2009, 12:58:39
Mělo by to jít takto:
RewriteEngine on RewriteBase / RewriteRule ^(index/)*index/?$ / [NC,L,R] RewriteRule ^([^.]*[^/])$ $1/ [L,R] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?route=$1 [L] Po odzkoušení bych ještě nahradil příznaky R za R=301. |
||
Domxxx Profil * |
#11 · Zasláno: 23. 12. 2009, 20:47:22
Smekám :-)
Máte u mě virtuální pivo! :-) PS: nastudoval jste to v oficiální dokumentaci, nebo máte nějaký dobrý ověřený zdroj? Nebo prostě jen zkušenost... (což určitě z velké části ano...) |
||
Časová prodleva: 14 let
|
0