Autor Zpráva
Monkeys
Profil *
Chcem mat adresu v tvare produkt - 123
do .htaccessu som pridal riadok

RewriteRule ^produkt-([a-zA-Z0-9\.\-]+)/([0-9]+)$ index.php?url=$1?id_produktu=$2 [L,QSA]

ale nic to nespravi

Co robim zle ?

M.
Kajman
Profil
Monkeys:
ale nic to nespravi

Nejdříve si opravte druhý otazník mezi $1 a id_produktu - má tam být &.

Takze když zadáte do prohlížeče např.

produkt-test/42

tak se nenačte stránka generovaná skriptem index.php? Máte rewrite vůbec zapnuté?
Monkeys
Profil *
Kajman:
Mam z toho teraz gulas
Ak mam v odkaze <a href="produkt&id_produktu=65">

A dam v htaccess pravidlo
RewriteRule ^produkt([a-zA-Z0-9\.\-]+)-([0-9]+)$ index.php?url=$1&id_produktu=$2 [L,QSA]

Tak cakam ze po kliknuti mi to v prehliadaci vypise adresu produkt-65
Chcem len prepisat tu adresu na nieco rozumnejssieho.

Ak to napisem do prehliadaca v tvare produkt-65 vrati mi to error stranku. (Teda ze sa nenasla)


M.
Davex
Profil
Monkeys:
Tak cakam ze po kliknuti mi to v prehliadaci vypise adresu produkt-65
To neočekávej. Do odkazů na stránce se nezasahuje a skript by měl vypsat odkaz v požadované podobě.

Ak to napisem do prehliadaca v tvare produkt-65 vrati mi to error stranku. (Teda ze sa nenasla)
Uvedená adresa nevyhovuje regulárnímu výrazu v přepisovacím pravidle. Co třeba produkt-neco-65?
Monkeys
Profil *
zmenil som odkaz smerujuci na stranku do tvaru napr. produkt65
pravidlo v .htaccess som dal RewriteRule ^produkt([0-9]*)$ produkt.php?id_produktu=$1 [L,QSA]
aj tak to nejde
PHP skript mi pise ze sa nenasiel id_produktu



M.
Kajman
Profil
Monkeys:
PHP skript mi pise ze sa nenasiel id_produktu

To už není problém v .htaccess, to máte problém v php skriptu. Vypište si tam, jaké id_produktu dojde a další hlášky, abyste zjistil, v které části se chová skript jinak, než očekáváte.
Monkeys
Profil *
Ako vlozit viac pravidiel do .htaccess

RewriteRule ^(.+)$ index.php?url=$1 [L,QSA] // toto je vseobecne pravidlo 
RewriteRule ^(.+)/([0-9]+)$ index.php?url=$1&id_produktu=$2 [L,QSA] // pravidlo pre produkty

Vseobecne pravidlo ma tvar napr.
www.mojadomena.sk/index
pravidlo pre produkty je napr.
www.mojadomena.sk/produkty/65

vseobecne pravidlo plati pre vsetky stranky na webe
ak zakomentujem vseobecne pravidlo tak mi funguje len pravidlo pre produkty

ako to mam spravit aby to fungovalo aj tam aj tam

V com je chyba ?

dik
M.
Kajman
Profil
Monkeys:
ako to mam spravit aby to fungovalo aj tam aj tam

Přehoďte si pravidla. Nahoře nechte speciální, níže pak obecné. Navíc si ošetřete, že už to není přepsáno (např. testem na existenci souboru, viz faq).
Monkeys
Profil *
Kajman:
Přehoďte si pravidla.

prehodil som to rozhodilo to cele stranky a problem ostal rovnaky

M.
Monkeys
Profil *
ako vypisem tento riadok

RewriteRule ^(.+)_([0-9]+)$ index.php?url=$1&id_produktu=$2 [QSA]

Ani neviem co sa tam vlastne zapise uz nadtym sedim cely den a nepohol som s tym este

M.
Monkeys
Profil *
Je lepsie pouzivat relativne alebo absolutne cesty v odkazoch ?


M.
Monkeys
Profil *
Tak po tyzdni pokus omyl som to nakoniec vyriesil takto:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)_([0-9]+)-(.+)\.html$ index.php?url=$1&id_produktu=$2 [L]
RewriteRule ^(.*)_([0-9]+)\.html$ index.php?url=$1&id_$1=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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