редирект с помощью htaccess сайт.ru/index.php?r=контролер/экшен на сайт.ru/экшен.html

maxy666

Профессор
Регистрация
23 Июл 2012
Сообщения
142
Реакции
44
Не получаеться сделать 301 редирект с
site.ru/index.php?r=site/test

на
site.ru/test.html

test - имя экшена


Написал правило:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule %{REQUEST_URI} ^/index\.php?r=site/(.*) [L]
RewriteRule ^(.*)$ Для просмотра ссылки Войди или Зарегистрируйся [R=301,L]

Но оно не работает корректно.
При проверке заголовков, выдаеться пере направление на

site site.ru/index.php?r=site/test
HTTP/1.1 301 Moved Permanently
Date: Tue, 13 Oct 2015 13:58:16 GMT
Server: Apache/2.2.27 (Unix) mod_ssl/2.2.27 OpenSSL/1.0.1e-fips
Location: Для просмотра ссылки Войди или Зарегистрируйся
Content-Length: 353
Content-Type: text/html; charset=iso-8859-1

То есть пропадает index.php, но остается ?r=site/


Если есть какие то заготовки пожалуйста помогите или хотя бы ткните где можно почитать детальнее с примерами составления правил редикра с htaccess
 
RewriteRule %{REQUEST_URI}
Для проверки переменных нужен RewriteCond
Код:
RewriteCond %{QUERY_STRING} ^r=site/(.*)
RewriteRule ^index\.php$ http://site.ru/%1.html? [R=301,L]
или так
Код:
RewriteCond %{THE_REQUEST} " /index\.php\?r=site/(\S+)"
RewriteRule ^ http://site.ru/%1\.html? [R=301,L]
Основные моменты работы mod_rewrite подробно разобраны в статье Для просмотра ссылки Войди или Зарегистрируйся
 
Можете подсказать, как составить правило для такой конструкции:
Для просмотра ссылки Войди или Зарегистрируйся

Для всех ID. Чтобы был 301 редирект на главную страницу сайта. Или лучше отдавать 404 ошибку, если такой страницы нет?
 
Можете подсказать, как составить правило для такой конструкции:
Для просмотра ссылки Войди или Зарегистрируйся
Для всех ID. Чтобы был 301 редирект на главную страницу сайта. Или лучше отдавать 404 ошибку, если такой страницы нет?
Код:
RewriteEngine On
RewriteBase /
RewriteRule %{QUERY_STRING} id=[\d]+&page=Main [NC]
RewriteRule .* http://Site.ru/? [R=301,L]
 
Сайт на Joomla 3
При данной конструкции циклический редирект идет на сайте.
 
Интересненько... Может где-то в админке в настройках стоит указание главной страницы как "Для просмотра ссылки Войди или Зарегистрируйся"?
Редирект то срабатывает...
 
нет. это адрес старых страниц. Новые с sef идут.

Вот полный файл htaccess

Скрытое содержимое доступно для зарегистрированных пользователей!
 
Тут ошибка аналогична той, что в старт посте
RewriteRule %{QUERY_STRING} заменить RewriteCond %{QUERY_STRING}
 
  • Нравится
Реакции: UJy
Что б я долго жил... Скопировал с примера из вопроса и не посмотрел. Спасибо комрад lag )))
Код:
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} id=[\d]+&page=Main [NC]
RewriteRule .* http://Site.ru/? [R=301,L]
Теперь заработает...
 
Назад
Сверху