正则表达式301重定向不起作用

时间:2019-02-22 00:18:40

标签: php regex .htaccess

我有许多以前采用以下格式的页面:

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: 我使用的是Blogger,当前使用的是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 :(得分:1)

您可以简单地将所有内容保存在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>

[*]不要忘记更新您的永久链接。