Регулярное выражение 301 перенаправления не работает - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть много страниц, которые ранее были в следующем формате:

p/example-title.html

В настоящее время все находятся в шаблоне:

example-title

Я пытаюсь использовать следующее регулярное выражение:

RewriteEngine On
RewriteRule ^p/(.+?)(-[0-9]+)?$ /$1 [L,R=301]

но это не работает

РЕДАКТИРОВАТЬ:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^p/(.+?)(.html)?$ /$1 [R=301,NC,L]
</IfModule>

РЕДАКТИРОВАТЬ 2: Я использовал блоггер ив настоящее время я использую WordPress домен тот же, поэтому я попробовал сейчас с {HTTPS_HOST}

<IfModule mod_rewrite.c>
RewriteEngine On
# BEGIN 301 Redirects
RewriteCond %{HTTPS_HOST} ^example.com [NC,OR]
RewriteCond %{HTTPS_HOST} ^www.example.com [NC]
Redirect 301 https://www.example.com/p/(.*)\.html$ https://www.example.com/$1
# END 301 Redirects
</IfModule>

, но он еще не работает

1 Ответ

0 голосов
/ 22 февраля 2019

Вы можете просто получить все после каталога p и указать .html, а затем перенаправить.

Таким образом, следующее получит все между p/ и .html и сохранит на$1, а затем будет перенаправлять.

RewriteEngine On
RewriteRule ^p/(.*)\.html$ /$1 [R=301,L]

Если вы используете Wordpress, вставьте следующее непосредственно перед директивами Wordpress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^p/(.*)\.html$ /$1 [R=301,L]
</IfModule>

[*] Не забудьте обновитьВаши постоянные ссылки.

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