Autor | Zpráva | ||
---|---|---|---|
Petr1234 Profil * |
#1 · Zasláno: 25. 3. 2015, 22:21:10
Ahoj,
asi dvě hodiny čumím na net, ale nejsem schopen rozchodit přesměrování jedné URL na druhou... Mám URL např. http://www.domena.cz/?akce=sluzba&id=abc123 a chtěl bych ji přesměrovat na http://www.domena.cz/sluzba/?id=abc123
Kde proměnná ID bývá vždy různá. Můžete mi, prosím, poradit jak toto ošetřit v .htaccess? Díky, Petr. |
||
juriad Profil |
Nechceš to spíš opačně?
Kdykoli uživatel zadá adresu http://www.domena.cz/sluzba/?id=abc123 , má se zobrazit (nikoli přesměrovat na) obsah adresy http://www.domena.cz/?akce=sluzba&id=abc123 .
RewriteRule ^sluzba ?akce=sluzba [QSA] Pak po zadání té adresy bude zavolán index.php a v $_GET bude: array(2) { ["akce"]=> string(6) "sluzba" ["id"]=> string(6) "abc123" } |
||
Petr1234 Profil * |
#3 · Zasláno: 25. 3. 2015, 22:51:02
No ona právě adresa na novém webu
http://www.domena.cz/?akce=sluzba&id=abc123 nebude existovat, systém, který ji generuje nejde předělat (respektive jde, ale to je jiná kapitola...). Takže pokud přijde uživateli na mail link http://www.domena.cz/?akce=sluzba&id=abc123 a klikne na něj, potřebuji by se mu vlastně "otevřel" http://www.domena.cz/sluzba/?id=abc123 .
Díky. |
||
juriad Profil |
Tak v tom případě:
RewriteCond %{QUERY_STRING} ^akce=sluzba&(.*)$ RewriteRule ^.* /sluzba?%1 $_GET dostaneš:
array(1) { ["id"]=> string(6) "abc123" } Pokud bys chtěl přesměrovat a nikoli podstrčit stránku, přidej na konec druhého řádku ještě [R=301] .
Užitečné čtení: wiki.apache.org/httpd/RewriteQueryString |
||
Petr1234 Profil * |
#5 · Zasláno: 26. 3. 2015, 14:36:49
Hmm, tož jsem to vyzkoušel, ale nestane se absolutně nic. Mod_rewrite normálně používám, ale po přidání tohoto pravidla se nestane nic, ani to třeba nehodí error 500 :(
|
||
juriad Profil |
#6 · Zasláno: 26. 3. 2015, 14:41:25
A není tam konflikt s dalším pravidly v tom .htaccess? Předpokládám, že toto není jediné.
Nejspíš by mělo být někde poblíž začátku, aby se další aplikovala až po tomto přepisu. |
||
Petr1234 Profil * |
#7 · Zasláno: 26. 3. 2015, 14:44:28
No mam tam "jen":
RewriteEngine On RewriteCond %{HTTP_HOST} ^domena\.cz RewriteRule (.*) http://www. domena\.cz/$1 [R=301,QSA,L] RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$ RewriteRule ^(.+[^/])$ /$1/ [L,R=301] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)/$ %{DOCUMENT_ROOT}/index.php?page=$1 [L,QSA] RewriteCond %{QUERY_STRING} ^action=confirm&(.*)$ RewriteRule ^.* /potvrzeni-objednavky?%1 |
||
Kajman Profil |
#8 · Zasláno: 26. 3. 2015, 19:37:32
Zkuste
RewriteEngine On RewriteCond %{HTTP_HOST} ^domena\.cz RewriteRule (.*) http://www. domena\.cz/$1 [R=301,QSA,L] RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$ RewriteRule ^(.+[^/])$ /$1/ [L,R=301] RewriteCond %{QUERY_STRING} ^action=confirm&(.*)$ RewriteRule ^.* %{DOCUMENT_ROOT}/index.php?page=potvrzeni-objednavky&%1 [L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)/$ %{DOCUMENT_ROOT}/index.php?page=$1 [L,QSA] |
||
Petr1234 Profil * |
#9 · Zasláno: 27. 3. 2015, 10:49:07
Hmm, toto přesměruje na hlavní stránku webu :(
|
||
Kajman Profil |
#10 · Zasláno: 27. 3. 2015, 11:13:07
Přesměrovat by mohlo jen pravidlo na řádku 3. nebo 5.
Zkuste řádky 6-7 dát výše mezi 3 a 4. Pokud tam bude stále přesměrování podívejte se do php, zda se nepřesměruje tam. |
||
Petr1234 Profil * |
#11 · Zasláno: 27. 3. 2015, 11:48:35
Nepomohlo :) Ale tak nevadí, zpracuji si URL přes PHP parse_url() a header() to přesměruji kam je potřeba.
I tak díky za pomoc. |
||
Časová prodleva: 9 let
|
0