.htaccess мод переписать не делает перенаправления - PullRequest
0 голосов
/ 31 октября 2018

Мне нужно сделать очень простой мод переписать на WordPress (с настройками по умолчанию .htaccess). Мне нужно перенаправить из категории test1 в test2

То, что я пытаюсь, терпит неудачу. Я думаю, что я упускаю что-то простое здесь

<IfModule mod_rewrite.c>
Options FollowSymLinks
Options -MultiViews
RewriteEngine On
RewriteBase /

RewriteRule ^test1/$ test2/$ #returns 404

#alternatively this one returns 404 too: RewriteRule ^/test1/$ test2/$

</IfModule>

1 Ответ

0 голосов
/ 31 октября 2018
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 за первую директиву, предполагает, что эти директивы фактически не обрабатываются?!

...