Конвертировать RedirectMatch в RewriteRule с условием - PullRequest
1 голос
/ 08 мая 2019

Я пытаюсь настроить перенаправление 301 для моей старой структуры постоянных ссылок в WordPress на структуру пост-имени, но без влияния на любые другие домены аддонов, размещенные в подкаталогах основного домена.

Yoast предоставляет этот код:

RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(?!page/)(.+)$ https://www.example.com/$4

Проблема в том, что это затрагивает все аддон-домены, которые я размещаю в подкаталогах корневого домена.Поэтому я думаю, что мне нужно изменить это на mod_rewrite, чтобы я мог использовать условие, которое будет влиять только на основной домен.Примерно так:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^some-address / [L,R=301]

Как мне преобразовать RedirectMatch в правильный RewriteRule?

1 Ответ

0 голосов
/ 08 мая 2019

Я не совсем уверен относительно ваших примеров URL, которые вы хотите перенаправить. Однако, возможно, этот код поможет вам определить правильный RewriteRule:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
    RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(?!page/)(.+)$ https://www.example.com/$4 [R=302,L]
</IfModule>

или

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
    RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(?!page/)(.+)$ https://www.example.com/$4 [R=301,L]
</IfModule>

Этот инструмент может помочь вам сделать регулярное выражение для RewriteRule:

enter image description here

Graph

Этот график показывает, как будет работать выражение в вашем RedirectMatch, и вы можете визуализировать другие выражения в этой ссылке :

enter image description here

Каждый раз, когда вы вносите изменения в файл .htaccess, вы можете захотеть очистить историю посещенных страниц и проверить ее на предмет работоспособности.

...