| 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.phpDě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: 16 let
|
|||
0
).