2013-08-14 2 views
-1

Я получаю url как это 'http://mysite.pl/public?products,BEER/7,shop_shelf', и я хочу переписать его в http://mysite.pl/index.php?product=BEER/7 в .htaccess.Слэши в выражении в htaccess

Любые идеи?

+1

Вы предпринимали какие-либо попытки написать образец? Не должно быть слишком сложно. – Jonathon

+0

Да, я думаю, что некоторые думают так: 'RewriteRule^products, ([a-zA-Z \. \ + A-z0-9 -_ /] *), ([a-zA-Z \. \ + A -z0-9 -] +)) $ index.php? product = $ 1 [L, B, NC] ' – user2073745

ответ

0
'RewriteRule ^products,([a-zA-Z\.\+a-z0-9-_/]*),([a-zA-Z\.\+a-z0-9-]+))$ index.php?product=$1 [L,B,NC] 

Немного проблем, которые я вижу там, вы не проверяете «публичный»? в начале, я думаю, вы тоже запутываете свои алфавиты.

RewriteRule ^public\?products,([a-zA-Z\.\+-_]+)\/([0-9]+),([a-zA-Z-_]+)$ 

Попробуйте что-то в этом роде, я только что написал это без проверки. Он должен проверить строку, начинающуюся с public?products,, за которой следует подшаблон, состоящий из 1 или более символов [a-zA-Z\.\+-_] (в вашей цели будет $1), а затем /, за которым следует другой подшаблон, состоящий из одного или нескольких символов [0-9] ($2), а затем , последовал наконец другую подмаска, содержащие символы [a-zA-Z-_] ($3, если вам это нужно)

Как я уже сказал, я не проверял это так просто начать с этого и баловаться с ней

+0

К сожалению, этот код не работает. См. Мой ответ. –

1

Все после знак вопроса - строка запроса, а RewriteRule работает только с строкой замещения. Вместо этого вы должны использовать RewriteCond.

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^products,([-/_\.a-z0-9]*?),[-/_\.a-z0-9]+$ [NC] 
RewriteRule ^public$ index.php?product=%1 [NC,L]