Mod_rewrite использует только некоторые правила - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть этот htaccess:

RewriteEngine On
RewriteRule ^tuote\.php/([^/]+) tuote.php?data=$1 [L]
RewriteRule ^ryhma\.php/([^/]+) ryhma.php?data=$1 [L]

RewriteRule ostoskori ostoskori.php [L]
RewriteRule ^lisaa\/([^/]+) ostoskori.php?a=4&data=$1 [L,NC]
RewriteRule ^lisaa-ostoskoriin/([^/]+) ostoskori.php?a=1&data=$1 [L,NC]
RewriteRule tyhjenna-ostoskori ostoskori.php?a=2

RewriteRule ^vahenna\/([^/]+) ostoskori.php?a=3&data=$1 [L,NC]
RewriteRule ^poista\/([^/]+) ostoskori.php?a=5&data=$1 [L,NC]

Когда я получаю доступ к lisaa-ostoskoriin, он не работает и, кажется, подключается ostoskori.php, но он должен подключиться ostoskori.php?a=1&data=$1.

Когда я получаю доступ к tyhjenna-ostoskori, он не работает и, кажется, соединяется ostoskori.php, но должен ostoskori.php?a=2.

Все остальные будут работать, но это только те, которые не работают.Как мне изменить код, чтобы он работал лучше?

Примеры URL
http://somesite.com/tuote/1-Product-name -> tuote.php?data=1-Product-name http://somesite.com/ryhma/1-Category-name ->ryhma.php?data=1-Category-name http://somesite.com/ostoskori -> ostoskori.php
http://somesite.com/lisaa/1-Product-name -> ostoskori.php?a=4&data=1-Product-name http://somesite.com/lisaa-ostoskoriin/1-Product-name -> ostoskori.php?a=1&data=1-Product-name

1 Ответ

1 голос
/ 21 сентября 2011

Попробуйте это:

RewriteEngine On
RewriteRule ^/(tuote|ryhma)\.php/([^/]+) $1.php?data=$2 [L]

RewriteRule ^/lisaa-ostoskoriin/([^/]+) ostoskori.php?a=1&data=$1 [L,NC]
RewriteRule ^/tyhjenna-ostoskori ostoskori.php?a=2 [L]
RewriteRule ^/vahenna/([^/]+) ostoskori.php?a=3&data=$1 [L,NC]
RewriteRule ^/lisaa/([^/]+) ostoskori.php?a=4&data=$1 [L,NC]
RewriteRule ^/poista/([^/]+) ostoskori.php?a=5&data=$1 [L,NC]

RewriteRule ^/ostoskori ostoskori.php [L]

Я сам не проверял это. Но порядок и регулярное выражение здесь очень важны, поскольку каждое следующее совпадение приводит к замене.

...