301 редирект index.php

Doroga_v_Nebo
На сайте с 09.11.2009
Offline
65
1211

Подскажите, как настроить 301 редирект через .htaccess.

Необходимо преобразовать УРЛы виды

/?action=content&id=1&blog=123

в

/index.php?action=content&id=1&blog=123

Но главная страница должна быть доступна только по адресу

site.ru

без index.php

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

Спасибо.

Подпись.
W
На сайте с 21.01.2009
Offline
172
#1

if($_SERVER['REQUEST_URI'] == '/index.php') {

header("Location: /",TRUE,301);

exit();

}

Doroga_v_Nebo
На сайте с 09.11.2009
Offline
65
#2
weblad:
if($_SERVER['REQUEST_URI'] == '/index.php') {
header("Location: /",TRUE,301);
exit();

}

Благодарю, вопрос с главной страницей решен.

Осталось каким-то образом преобразовать урлы к виду

/index.php?action=content&id=1&blog=123
W
На сайте с 21.01.2009
Offline
172
#3
Doroga_v_Nebo:
Благодарю, вопрос с главной страницей решен.
Осталось каким-то образом преобразовать урлы к виду

Я думал мой вариант для всех адресов работает, тогда присоединяюсь к вопросу, тоже интересно.

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

В .htaccess добавить для главной


RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index.php$ http://%{HTTP_HOST}/ [R=301,NC,L]

для страниц со строкой запроса (вида "/?.....")


RewriteCond %{QUERY_STRING} .+
RewriteRule ^$ http://%{HTTP_HOST}/index.php [R=301,QSA,L]

Можно еще перед каждой парой строк добавить

RewriteCond %{ENV:REDIRECT_STATUS} ^$

чтоб не применялось правило, если уже произошло какое-то преобразование в строках выше по .htaccess

weblad:
Я думал мой вариант для всех адресов работает

Для адреса "/index.php?action=content&id=1&blog=123" переменная $_SERVER['REQUEST_URI'] содержит всю эту строку, а не только "/index.php"

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
Doroga_v_Nebo
На сайте с 09.11.2009
Offline
65
#5
RewriteEngine on

RewriteCond %{QUERY_STRING} .+
RewriteRule ^$ http://%{HTTP_HOST}/index.php [R=301,QSA,L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index.php$ http://%{HTTP_HOST}/ [R=301,NC,L]

gormarket, Спасибо, все прекрасно работает)

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