Autor Zpráva
hopla
Profil
Ahojte,

prosim o radu. Mam web v ktorom su stranky napriklad v tomto formate : domena.sk/index.php?cPath=6&skupina=barove-stolicky
v .htaccess som vytvoril kod :
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} !^podskupina$
RewriteCond %{QUERY_STRING} ^(.*)&skupina=(.*)$
RewriteRule ^index\.php$ %2.html? [R=301]
RewriteRule ^taburetky\.html index.php?rw=1&cPath=5 [L,QSA]
RewriteRule ^barove-stolicky\.html index.php?rw=1&cPath=6 [L,QSA]
atd.
V prikazovom riadku sa zobrazi korektne : domena.sk/barove-stolicky.html

zaroven na strankach mam aj takyto format : domena.sk/index.php?cPath=6_601&skupina=barove-stolicky&podskupina=lacne
v .htaccess som skusil kod :
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} ^(.*)&skupina=(.*)&podskupina=(.*)$
RewriteRule ^index\.php$ %2-%3.html? [R=301]
RewriteRule ^barove-stolicky-lacne\.html index.php?cPath=6_601 [L]
RewriteRule ^barove-stolicky-standardne\.html index.php?cPath=6_602 [L]
atd.
V prikazovom riadku sa zobrazi korektne : domena.sk/barove-stolicky-lacne.html

Avsak ked ich spojim dokopy do jedneho .htaccess tak mi nefunguju. Cast funguje (prva je OK) avsak druha hadze chybu.
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} !^podskupina$
RewriteCond %{QUERY_STRING} ^(.*)&skupina=(.*)$
RewriteRule ^index\.php$ %2.html? [R=301]
RewriteRule ^taburetky\.html index.php?rw=1&cPath=5 [L,QSA]
RewriteRule ^barove-stolicky\.html index.php?rw=1&cPath=6 [L,QSA]

RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} ^(.*)&skupina=(.*)&podskupina=(.*)$
RewriteRule ^index\.php$ %2-%3.html? [R=301]
RewriteRule ^barove-stolicky-lacne\.html index.php?cPath=6_601 [L]
RewriteRule ^barove-stolicky-standardne\.html index.php?cPath=6_602 [L]
atd.

Neviete kde moze byt chyba ?

Druha otazka je, ci nahodou takymto sposobom nebude dochadzat k zdvojeniu obsahu, co by sposobilo penalizaciu (znizenie PR) napr. v googli.

Peter
Davex
Profil
Routování patří do PHP skriptu, takže je nesmysl ho nahrazovat pravidly mod_rewrite. Jedním jednoduchým pravidlem předej celou cestou PHP skriptu a zbytek udělej v něm. Bude to tak jednodušší.

Přesměrování ze starých URL na nové tam můžeš nechat, ale pravděpodobně bude nutné přidat k přesměrování ještě příznak [L] a víc konkrétní pravidlo dát před obecnější.

RewriteCond %{QUERY_STRING} ^(.*)&skupina=([^&]+)&podskupina=(.+)$
RewriteRule ^index\.php$ %2-%3.html? [R=301,L]

RewriteCond %{QUERY_STRING} ^(.*)&skupina=([^&]+)$
RewriteRule ^index\.php$ %2.html? [R=301,L]
hopla
Profil
Dik za odpoved.

Bohuzial nie som v .php dost zdatny a tak neviem presne ako predat do .php parameter z .htaccess a ako v .php spravit routovanie. Vies mi prosim pomoct s nejakym prikladom ?

Predat parameter by sa asi dalo cez [E=var:hodnota]. Len zatial neviem ako oznacit parameter aby som ho v .php mohol pouzit.
A nie je mi jasne, ak budem odkazovat na subor : %2-%3.html ako budem riesit nejaky subor v .php

Peter
Davex
Profil
V novém URL chybí obsah parametru cPath, který přesměrováním zahazuješ, takže se zpět nedá vykouzlit bez mapy adres v poli nebo databázi apod.

Při vytváření pěkných adres obvykle nestačí pouze pravidla mod_rewrite v souboru .htaccess, ale musí s nimi umět pracovat i aplikace - při vytváření odkazů a routování. Pokud neumíš moc programovat v PHP a tu aplikaci jsi nevytvářel, tak se do toho raději nepouštěj, protože to není tak jednoduché.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0