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
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
[#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
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
Davex:
Jednoduchý přepis hází stále forbidden, znamená to tedy, že mod_rewrite nefunguje?

Díky
Watchick
Profil
PHPinfo, jestli to nějak pomůže
Davex
Profil
Ještě mě napadá, že se často zapomíná na konfigurační volbu:
Options +FollowSymLinks
Watchick
Profil
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymLinks
RewriteBase /
RewriteRule .* /web/index.php
</IfModule> 

Takto?
Davex
Profil
Ano, v této podobě RewriteRule to může být i bez RewriteBase:
RewriteEngine On
Options +FollowSymLinks
RewriteRule .* /web/index.php
Watchick
Profil
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&params=$3&lang=$1 [L,QSA]
RewriteRule ^(cz|hu|pl)/(.+)/$ index.php?params=$2&lang=$1 [L,QSA]
ddss
Profil *
Watchick:
taky je možné, že si musíš v administraci povolit použití .htaccess, to už se mi na jednom hostingu stalo
ninja
Profil
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
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
Davex:
.htaccess mam v rootu, a index.php v web/, tam ale přímo odkazuje ten htaccess, do složky web.
Davex
Profil
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
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
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
mělo by to fungovat.
Watchick
Profil
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
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]
V idkategorie bude pak všechno za web.cz/produkty/.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0