#regex #apache #.htaccess #mod-rewrite
#регулярное выражение #apache #.htaccess #мод-перезапись
Вопрос:
У меня простой вопрос о htaccess, но я не могу его решить. Часть ссылок моего сайта в поиске Google содержит фрагмент URL-адреса, и я не знаю, как этот фрагмент появился там? вот пример:
в Google seach это:
http://dobry-portal.pl/part1-/Tranformers,main,film,0
реальный адрес — это http://www.dobry-portal.pl/Tranformers,main,film,0
Иногда адреса в Google seach имеют более одной части между косыми чертами, например. http://dobry-portal.pl/part1-/part2-/part3-/Tranformers,main,film,0
Как я могу просто вырезать эти части в htaccess, чтобы перенаправить на реальные адреса http://www.dobry-portal.pl/Tranformers,main,film,0
Я пробовал
RewriteRule (.)/часть1-/(.) $1/$2 [ Л]
но это не работает
Спасибо за помощь, Адам
Ответ №1:
Это должно удалить все «поддельные подкаталоги» между косыми чертами для вас:
RewriteRule ^.*/([^/,]*,.*) $1 [L,R=301]
^.*/
жадно сопоставляет путь до последней косой черты([^/,]*,.*)
захватывает в группу 1…[^/,]*
любые символы, которые не являются косыми чертами или запятыми,,.*
затем запятая и остальная часть строки$1
Обратная ссылка заменяет URL-адрес Group 1[L,R=301]
последнее правило, постоянное перенаправление
Я уверен, что возможны некоторые изменения, но это должно помочь вам начать.
Ответ №2:
Попробуйте это:
RewriteRule ^(.*)(/part[0-9] -) (.*)$ $1$3 [L]
Вы также можете попробовать шаблон RewriteCond:
RewriteCond %{REQUEST_URI} ^(.*)(/part[0-9] -) (.*)$ [NC]
RewriteRule ^ %1%3 [L]
Для получения более подробной информации см. Документацию.