RewriteRule ^test1/$ test2/$ #returns 404
Если mod_rewrite включен и вы попытались выполнить эту точную строку, вы получите 500 Internal Server Error, потому что у вас недопустимый аргумент flags . Вам необходимо явно указать, что это перенаправление с флагом R
, в противном случае вы получите внутреннюю перезапись .
Кроме того, вторым аргументом директивы RewriteRule
является обычная строка, а не регулярное выражение, поэтому конечный $
в test2/$
недопустим.
Любые внешние перенаправления также должны выходить за пределы существующих директив WordPress (т. Е. Фронт-контроллера).
Попробуйте следующее вместо вышеперечисленного:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^test1/$ /test2/ [R=302,L]
# BEGIN WordPress
# ... Rest of .htaccess file goes here
Это перенаправляет одиночный URL /test1/
на /test2/
.
Измените 302
(временный) на 301
(постоянный) только после того, как вы проверили, что он работает нормально. (Это, конечно, только если это должно быть постоянным.)
Оболочка <IfModule>
здесь не требуется.
в качестве альтернативы этот тоже возвращает 404: RewriteRule ^ / test1 / $ test2 / $
Это ничего не даст в контексте каталога (.htaccess
) из-за префикса косой черты в шаблоне RewriteRule
.
Тот факт, что вы получаете 404 за первую директиву, предполагает, что эти директивы фактически не обрабатываются?!