在结尾处将301从非尾部斜杠重定向到尾部斜杠

时间:2016-08-07 00:56:07

标签: php wordpress .htaccess redirect mod-rewrite

我在子目录domain.com/blog/中安装了Wordpress 结尾斜杠的问题,Wordpress帖子为两个版本提供200 OK http:domain.com/blog/post-name和domain.com/blog/post-name /

我想在结尾处强制尾随斜杠,并在结尾处将301从非斜杠重定向到尾随斜杠

所以尾随斜杠版本仅提供200 OK

我的代码

# Force Trailing Slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^/]+$ %{REQUEST_URI}/ [L,R=301]

1 个答案:

答案 0 :(得分:0)

代码的问题出在正则表达式:^ [^ /] + $

此正则表达式匹配每个字符串而没有任何斜杠,因此像domain.com/blog这样的字符串将不匹配。实现目标的最佳方式如下:

# Force Trailing Slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^(.*)[^/]{1}$
RewriteRule (.*) $1/ [L,R=301]

如果您使用默认的wordpress htaccess file,您应该这样做:

# BEGIN WordPress
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # Force Trailing Slash
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} ^(.*)[^/]{1}$
    RewriteRule (.*) $1/ [L,R=301]


    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

</IfModule>
# END WordPress