Я перерабатываю свой сайт, переименовывая множество каталогов, и мне нужен простой способ написать мои переадресации .htaccess для всех этих страниц. Я надеюсь на решение, которое не включает очень длинный список файлов. Мой файл .htaccess огромен, как есть.Можно ли использовать подстановочные знаки в файле .htaccess для массовых ходов?
0
A
ответ
0
Вы можете использовать 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/
).
Я не могу заставить форматирование работать, извините. Я сделал что-то неправильно при использовании выше. Я написал ... Redirect 301/fantasy/v/fantasy/мнения RedirectMatch 301 ^/fantasy/v /(.*)/fantasy/мнения/$ 1 , но это вызвало ошибку внутреннего сервера для всего моего сайта. Затем я попробовал это ... Redirect 301 http://www.xecu.net/fantasy/v http://www.xecu.net/fantasy/opinions RedirectMatch 301 http://www.xecu.net/ fantasy/v (. *) http://www.xecu.net/fantasy/opinions$1 Это не вызвало ошибку, но не сработало. Что я сделал не так? –