Как я могу удалить символьную косую черту, используя правило .htaccess? - PullRequest
6 голосов
/ 26 декабря 2010

Я хочу «перехватить» входящие URL-адреса, которые входят в мой сервер с дополнительными символами «% 252F» в URL-адресе (по некоторым историческим причинам) и перенаправить их (301) на тот же URL-адрес без этих символов. Например: входящий URL: www.sample.com/content/%252F/foo после .htaccess правило: www.sample.com/content/foo

Я должен быть в состоянии поймать несколько экземпляров этих символов в URL (в том же месте), например: www.sample.com/content/%252F/%252F/%252F/foo и удалить их все.

Какой .htaccess RewriteRule мне следует использовать?

Ответы [ 3 ]

0 голосов
/ 08 февраля 2011
RewriteRule (/.*?)?((/%2F)+)(.*) $1$4 [redirect=301,last]
0 голосов
/ 02 августа 2014

Это работает

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)/%2F(.*) /$1$2 [R=301,L]

но есть недостаток, он делает несколько переадресаций (1 для каждой группы% 252F)

0 голосов
/ 26 декабря 2010

AFAIK RewriteRule должен знать точный формат URL входящего запроса. Поэтому наличие произвольного числа строк% 252F там не поддерживается.

Однако вы можете создать собственную страницу 404, которая анализирует URL-адрес запроса для% 252F. Пользовательская страница 404 будет следовать следующей логике:

Search the request URL for %252F
  If found, replace it with a / (or nothing, up to you) and return a 301 header
    and an appropriate error page.
  Else return a 404 header and appropriate error page.

Это должно дать вам эффект, который вы хотите. Не беспокойтесь о лишних слешах, apache их игнорирует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...