Можно ли использовать подстановочные знаки в файле .htaccess для массовых перемещений?
-
20-09-2019 - |
Вопрос
Я переделываю свой веб-сайт, собираюсь переименовать множество каталогов, и мне нужен простой способ написать перенаправления .htaccess для всех этих страниц.Я надеюсь на решение, которое не будет включать очень длинный список файлов.Мой файл .htaccess и так огромен.
Решение
Вы можете использовать mod_alias или mod_rewrite для вашего перенаправления.mod_rewrite работает с регулярными выражениями, а mod_alias может работать как с регулярными выражениями, так и с префиксами путей.
Вот несколько примеров, когда вы хотите переписать /foo/…
к /bar/…
:
# mod_alias
# path prefix
Redirect 301 /foo /bar
# regular expression
RedirectMatch 301 ^/foo/(.*) /bar/$1
# mod_rewrite
RewriteEngine on
RewriteRule ^foo/(.*) /bar/$1 [L,R=301]
Обратите внимание, что mod_alias и mod_rewrite предъявляют разные требования к шаблонам регулярных выражений.mod_alias всегда требует полного URL-пути.Но с mod_rewrite это зависит от того, используете ли вы его в файле .htaccess или в разделе конфигурации сервера/виртуального хоста.В файле .htaccess вам необходимо написать шаблон без префикса пути для каждого каталога (в случае корня документа просто /
, в случае /quux/
его /quux/
).