пара проблем с реврайтом...

1. Алексей (26.02.2013 / 18:30)
в общем на сайте ссылки вида:
http://site.ru/?str=cabinet
как сделать, чтоб при заходе на:
http://site.ru/index.php?str=cabinet (те если в адресной строке есть index.php + get запрос - переадресовывть, а если просто /get запрос - то пропускать) - срабатывал редирект на главную?
сделал редирект с index.php на /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]
но при гет запросах к индеку - эта фича не катит...
***
и еще:
почему не катит:
RewriteRule ^?str=chat$ chat.php [L], а без вопроса катит... но мнеж надо чтоб http://site.ru/?str=chat (именно с вопросом (?str, а не просто str)) обращался к http://site.ru/chat.php

2. Кевин Митник (27.02.2013 / 01:13)
а разница? с помощью модуля ты настраиваешь всего лишь внешний вид, ссылка то по прежнему та же. в скрипте параметры видны так же

3. Петр (27.02.2013 / 07:16)
RewriteRule ищет совпадения в строке, которая содержит адрес до первого символа ?. Все, что после, находится в %{QUERY_STRING} и требует отдельной проверки в RewriteCond. Полагаю, проблема в этом.

4. Алексей (27.02.2013 / 17:37)
2. Кевин Митник_HHTeam, я знаю что я делаю. мне это необходимо для однообразия ссылок

Добавлено через 01:27 сек.
3. Im-ieee, первый вопрос решил. правдо совсем по другому... но норм... а насчет второго вообще не получается...

5. Dmitry Kokorin (27.02.2013 / 19:39)
RewriteRule ^?str=chat$ chat.php [L]
это как??? ты пытаешься получить адрес site.ru/chat.php или site.ru/?str=chat& ??? Вот пара примеров:
RewriteEngine on
RewriteBase / 
RewriteRule ^([a-z]*)/?$ /?str=$1& [L,QSA]
RewriteRule ^([a-z]*)/([a-z]*)/?$ /?str=$1&$2 [L,QSA]
таким образом будет так: site.ru/chat site.ru/forum и т.п
но есть один минус... чтобы не выскакивала ошибка 404 при обращении к index.php надо сделать так:
RewriteRule ^/?$ index.php [L,QSA]


6. Алексей (27.02.2013 / 21:05)
5. DimmoS, мне именно нужно из site.ru/chat.php сделать site.ru/?str=chat
но из-за вопроса после слеша - не канает...

7. Кевин Митник (27.02.2013 / 22:35)
use %{QUERY_STRING}

8. Dmitry Kokorin (28.02.2013 / 00:19)
FaZaHaK (27 Февраля 2013 / 21:05)
5. DimmoS, мне именно нужно из site.ru/chat.php сделать site.ru/?str=chat
но из-за вопроса после слеша - не канает...
для поисковиков не очень такие адреса да и юзерам труднее!!

9. Алексей (28.02.2013 / 12:02)
7. Кевин Митник_HHTeam, я в реврайте вообще плохо шарю... как это применить правельно?

Добавлено через 01:15 сек.
8. DimmoS, блин, я спросил как это сделать... мне пофиг на поисковики и моих юзеров... мне надо чтоб все было единообразно и все...

10. Петр (28.02.2013 / 12:46)
9. FaZaHaK, я же тебе написал - использовать RewriteCond.
RewriteCond %{QUERY_STRING} regexp 
RewriteRule ...
http://httpd.apache.org/docs/current/mod/mod_rewrite.html

11. Алексей (05.03.2013 / 22:31)
10. Im-ieee, попробывал так:

RewriteCond %{QUERY_STRING} ^([?]+)
RewriteRule ^%1str=chat$ chat.php [L]

все-равно не катит...

12. Петр (06.03.2013 / 07:02)
11. FaZaHaK, ты проверяешь совпадение ?str=chat в RewriteRule, а надо в RewriteCond.

URL: https://visavi.net/topics/36899