htaccess RewriteRule

KK
На сайте с 25.07.2006
Offline
138
430

подскажите плиз как прописать адрес page.php?10 в RewriteRule?

Нужно что-то такое в итоге получить:

RewriteRule ^page.php?10$ index.php?newsid=5 [L]

Правая часть правильная. а вот левую никак не могу понять как правильно прописать. уже долго в справочнике по синтаксису ковыряюсь - не выходит...

gormarket
На сайте с 29.12.2010
Offline
47
#1

В левой части Вы можете проверить только то, что до знака ?, т.е.

RewriteRule работает в вашем случае только с page.php, да и здесь желательно заэкранировать точку, поскольку в левой части находится регулярное выражение, а в нем точка означает "любой символ"

А вот чтобы проверить то что после знака ? (строку запроса), нужно это делать в условии RewriteCond и используя переменную %{QUERY_STRING}

для RewriteCond уже в правой части регулярное выражение стоит, и в нем можно использовать соответствующие спецсимволы регулярок (^ - начало строки, $ - конец строки и т.д.)

Т.е. для вашего примера должно быть примерно так

RewriteCond %{QUERY_STRING} ^10$

RewriteRule ^page\.php$ index.php?newsid=5 [L]

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

Поищите в поисковиках такое "RewriteRule htaccess", почитайте

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
KK
На сайте с 25.07.2006
Offline
138
#2

Спасибо. А подскажите еще, пожалуйста, можно ли в RewriteCond использовать переменные?

Сделать что-то типа

RewriteCond %{QUERY_STRING} ^([0-9]+)$

RewriteRule ^page\.php$ index.php?newsid=$1 [L]

siv1987
На сайте с 02.04.2009
Offline
427
#3
Kel_Kimpbell:
Спасибо. А подскажите еще, пожалуйста, можно ли в RewriteCond использовать переменные?

Для обратной связи используется знак %

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий