Переписать URL-адрес постоянной ссылки WordPress, используя mod_rewrite breaks Архив - PullRequest
2 голосов
/ 12 декабря 2011

Следующее правило mod_rewrite выполняет задачу перезаписи www.domain.com/2011/11/page в www.domain.com/page, но разбивает www.domain.com/2011/11/ (то есть разбивает списки архивов WordPress) и перенаправляет его в корень сайта.

Правило перезаписи должно переписывать только те элементы, которые имеют содержимое после ^([0-9]{4})/([0-9]{1,2})/page, но не ^([0-9]{4})/([0-9]{1,2})/.

RewriteRule ^([0-9]{4})/([0-9]{1,2})/(.*)$ /$3 [NC,R=301,L]

Любые рекомендации?

ОТВЕТ

В начале отсутствовал начальный слеш:

RewriteRule ^/([0-9]{4})/([0-9]{2})/(.*)$ /$3 [NC,R=301,L]

и необходима постоянная ссылка WordPress:

/%postname%/

вместо:

%postname%

хотя я не уверен, насколько последний помог.

1 Ответ

2 голосов
/ 12 декабря 2011

Я думаю, вам нужно изменить * на +

RewriteRule ^([0-9]{4})/([0-9]{1,2})/(.*)$ /$3 [NC,R=301,L]

должно быть

RewriteRule ^([0-9]{4})/([0-9]{1,2})/(.+)$ /$3 [NC,R=301,L]

С (. ), он может ничего не совпадать, таким образом,запрос типа «/ 2011/11 /» будет совпадать, но обратная ссылка для (. ) будет пустой, поэтому перезапись будет выполнена в «/». + указывает, что должен быть хотя бы 1 символ, удовлетворяющий символу "."в регулярном выражении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...