#regex #apache #.htaccess #redirect #seo
#регулярное выражение #apache #.htaccess #перенаправление #seo
Вопрос:
Я хочу перенаправлять в .htaccess каждый URL-адрес, внутри которого есть символ «?», в корень моего сайта (domain.com).
Я прочитал это :
301-htaccess-redirect-with-special-characters
/how-to-make-htaccess-rule-for-a-url-with-specific-characters
Но я все еще не знаю, как это сделать. Я знаю лишь немного регулярных выражений.
Примеры URL-адресов, которые я хотел бы перенаправить в корень моего сайта :
http://www.portaltarot.com/index.html?url=/MHL-Papus.html
http://www.portaltarot.com/index.phpindex.php ?Itemid=249
Комментарии:
1. Вы уверены, что хотите это сделать. Блокировка URL-адресов строками запроса может непреднамеренно заблокировать доступ пользователей к вашему веб-сайту. например, если вы используете AdWords и автоматическую пометку, объявления будут прерываться. маркетинг по электронной почте с отслеживанием кампаний и т.д. Если вы это делаете, делайте это для определенных значений, а не для всего.
2. Да, я уверен. У меня нет Adwords и т.д.
3. Но могут быть и другие. например, иногда твиты отправляются с помощью средств сокращения URL-адресов и добавляются коды отслеживания utm. Проверьте свои журналы, чтобы узнать, используются ли строки запроса и хотите ли вы запретить этим посетителям просматривать контент, который они ожидали.
Ответ №1:
Для этого вам нужно использовать mod_rewrite, поэтому что-то вроде:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^url=/MHL-Papus.html$
RewriteRule ^index.html$ / [L,R=301]
RewriteCond %{QUERY_STRING} ^Itemid=249$
RewriteRule ^index.phpindex.php$ / [L,R=301]
Комментарии:
1. 1) Первый URL перенаправляет на корневой каталог, но URL в navigator не изменяется, поэтому частично решается; Возможно ли изменить также URL-адрес на корневой домен?
2. 2) Второй URL заканчивается 404 (не найден) перенаправлениями на portaltarot.com /? Itemid=249
3. чтобы остановить передачу строки запроса адресату, измените / на /? например, RewriteRule ^index.html $ / ? [L,R=301]