пара проблем с реврайтом...
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