Я использую апачский RewriteMap с текстовым файлом, чтобы отобразить старые адреса на новые URL, в моем файле (red.map) У меня естьApache RewriteMap с подстановочным условием
/old-awful-url.html /new-lovely-shiny-url.html
Тогда в моем апаче конфигурации у меня есть : -
RewriteEngine On
RewriteMap migration txt:/home/red.map
RewriteCond ${migration:$1} /.+
RewriteRule ^(/.*) ${migration:$1} [L,R=301]
Это прекрасно работает, но теперь я хотел бы добавить подстановочные в состоянии соответствовать также некоторые старые URLs, которые имеют один и тот же конец, но имеют перед /cgi-bin/scriptname
, например, я также хочу, чтобы соответствовать /cgi-bin/scriptname/old-awful-url.html
Я попытался изменить к RewriteCond, чтобы: -
RewriteCond ^.*${migration:$1} /.+
Думая это будет соответствовать что-нибудь перед URL в файле, с и без CGI части, я попробовал несколько комбинаций, но безуспешно, Это возможно?
Спасибо, отлично работает! –
Привет @ hjpotter92, я думаю, RewriteCond необходим для обработки дела, что lookup возвращает пустую строку на несоответствие. В противном случае RewriteRule в вашем первом фрагменте будет запущен даже при несоответствии (и перенаправляется на корень документа вместо правильного 404). Ваш второй фрагмент, вероятно, не работает в этом порядке, так как шаблон первого правила также соответствует 'cgi-bin/scriptname'. – martin
@martin Карта позаботится об этом. – hjpotter92