Autor | Zpráva | ||
---|---|---|---|
Watchick Profil |
zdravím, mám takovýto zápis v .htaccess, v podobném zněni mi to na jiném webu a hostingu fungovalo.
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^(.*)/([^/]+)/([^/]+)/?$ RewriteRule .* web/index.php?m=%2&idkategorie=%3 [QSA] </IfModule> Mám tam někde chybu? Nebo to hosting nepodporuje? Děkuji za rady Watchick Moderátor Joker: Titulek „seo url“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
Netýká se PHP, přesouvám do Konfigurace webového serveru |
||
ninja Profil |
#2 · Zasláno: 27. 9. 2010, 13:26:20
Zkuste odebrat RewriteBase, případně různé modifikace:
RewriteRule .* /web/index.php?m=%2&idkategorie=%3 [QSA] RewriteRule .* ./web/index.php?m=%2&idkategorie=%3 [QSA] RewriteRule .* /index.php?m=%2&idkategorie=%3 [QSA] RewriteRule .* ./index.php?m=%2&idkategorie=%3 [QSA] |
||
Watchick Profil |
#3 · Zasláno: 27. 9. 2010, 17:54:34 · Upravil/a: Watchick
[#2] ninja zkoušel jsem všechny tyto modifikace a nic nepomáhá. Jestli to správně chápu, tak by měla fungovat následující adresa?
http://www.url.cz/produkty/produkty/ Jinak mi to vždy hází chybu 403 Forbidden Díky |
||
Davex Profil |
#4 · Zasláno: 27. 9. 2010, 18:22:19
Možná to bude fungovat bez té podmínky takto:
RewriteEngine On RewriteRule ^(.*/)?([^/]+)/([^/]+)/?$ /web/index.php?m=$2&idkategorie=$3 [QSA] Pokud to nepomůže, tak vyzkoušej jestli mod_rewrite funguje jednoduchým přepisem: RewriteRule .* /web/index.php |
||
Watchick Profil |
#5 · Zasláno: 27. 9. 2010, 20:22:15
Davex:
Jednoduchý přepis hází stále forbidden, znamená to tedy, že mod_rewrite nefunguje? Díky |
||
Watchick Profil |
#6 · Zasláno: 27. 9. 2010, 20:23:40
PHPinfo, jestli to nějak pomůže
|
||
Davex Profil |
#7 · Zasláno: 27. 9. 2010, 20:39:36
Ještě mě napadá, že se často zapomíná na konfigurační volbu:
Options +FollowSymLinks |
||
Watchick Profil |
#8 · Zasláno: 27. 9. 2010, 21:12:37
<IfModule mod_rewrite.c> RewriteEngine On Options +FollowSymLinks RewriteBase / RewriteRule .* /web/index.php </IfModule> Takto? |
||
Davex Profil |
#9 · Zasláno: 27. 9. 2010, 22:50:02
Ano, v této podobě RewriteRule to může být i bez RewriteBase:
RewriteEngine On Options +FollowSymLinks RewriteRule .* /web/index.php |
||
Watchick Profil |
#10 · Zasláno: 28. 9. 2010, 12:42:57
Pomůže nějak, když vím, že na jiné doméně stejného hostingu fungoval tento:?
RewriteEngine On RewriteRule ^$ /cz/home/ [R,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+[^(/)])$ /$1/ [R,L,QSA] #RewriteRule ^(cz|hu|pl)/(produkty)/(.+)/$ index.php?ctrl=products¶ms=$3&lang=$1 [L,QSA] RewriteRule ^(cz|hu|pl)/(.+)/$ index.php?params=$2&lang=$1 [L,QSA] |
||
ddss Profil * |
#11 · Zasláno: 28. 9. 2010, 13:31:19
Watchick:
taky je možné, že si musíš v administraci povolit použití .htaccess, to už se mi na jednom hostingu stalo |
||
ninja Profil |
#12 · Zasláno: 28. 9. 2010, 15:05:30
Watchick: 403 Forbidden ti vrací URL ze které přesměrováváš nebo na kteoru přesměrováváš?
A nebude lepší kontaktovat hosting? |
||
Davex Profil |
#13 · Zasláno: 28. 9. 2010, 15:24:29
Watchick:
Mám pocit, že dáváš soubor .htaccess někam jinam nebo máš jinde soubor index.php. Když smažeš soubor .htaccess z rootu webu, tak přímý přístup ke skriptu /web/index.php funguje? |
||
Watchick Profil |
#14 · Zasláno: 28. 9. 2010, 16:50:49
Davex:
.htaccess mam v rootu, a index.php v web/, tam ale přímo odkazuje ten htaccess, do složky web. |
||
Davex Profil |
#15 · Zasláno: 28. 9. 2010, 17:48:19
A ten přímý přístup k http://rozbita.adresa/web/index.php bez mod_rewrite pravidel funguje nebo ne?
Jinak se domívám, že tam mod_rewrite vůbec nefunguje, protože moje pravidlo z [#9] by mělo způsobit chybu 500. Správně by tam ještě měla být zarážka proti zacyklení: Options +FollowSymLinks RewriteEngine On RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteRule .* /web/index.php |
||
Watchick Profil |
#16 · Zasláno: 28. 9. 2010, 18:38:31
Davex:
Ano, předtím to 500 hodilo. Nyní s tímto kódem se skutečně vše přesměrovává na web/index.php. pomohlo to nějak? Díky |
||
Davex Profil |
#17 · Zasláno: 28. 9. 2010, 19:02:04
Tím se ověřilo, že je mod_rewrite funkční, takže teď zpět k původnímu problému:
Zkus přidat před tvá původní pravidla z [#1] jen řádek: Options +FollowSymLinks |
||
Watchick Profil |
#18 · Zasláno: 28. 9. 2010, 20:21:47
Davex:
Díky moc! Už to funguje. Když už je to tu tak krásně rozdiskutované, tak bych se chtěl zeptat. Když to mám v tomto tvaru <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^(.*)/produkty/([^/]+)/?$ RewriteRule .* web/index.php?m=produkty&idkategorie=%3 [QSA] </IfModule> Tedy: web.cz/produkty/pocitace/ Když budu chtít mít "neomezeně podkategorií"tak to mohu upravit na: RewriteCond %{REQUEST_URI} ^(.*)/produkty/(.*)?$ a Adresa: web.cz/produkty/pocitace/acer/17-palcu/s-numerickou-klavesnici/ vyhodí do idkategorie pocitace/acer/17-palcu/s-numerickou-klavesnici/, chápu to správně? Ještě jednou díky za pomoc |
||
Davex Profil |
#19 · Zasláno: 28. 9. 2010, 21:05:14
Watchick:
V podstatě to tak jde, ale pokud budou produkty vždy první, tak to lze zjednodušit a hodnotu získat přímo v přepisovacím pravidle: Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule ^produkty/(.*)$ web/index.php?m=produkty&idkategorie=$1 [QSA,L] |
||
Časová prodleva: 14 let
|
0