.htaccess中的强制尾随斜线?

时间:2014-10-13 21:57:35

标签: php wordpress .htaccess mod-rewrite url-rewriting

以下.htaccess代码是否正确?它用于SEO目的。我在谷歌发现它,但我想确定它可以使用。它放在.htaccess文件中,用于强制非斜杠URL上的斜杠。另外,具体来说,/ $ 1 / $ 2 /部分是否正确?

#Force Trailing Slash
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.com/$1/$2/ [L,R=301] 

我是否还需要为非www网址添加RewriteRule(见下文)?

RewriteRule ^(.*)$ http://domain.com/$1/$2/ [L,R=301] 

另外,你是否只需要在.htaccess的最顶端使用下面的ONCE?

RewriteEngine On
RewriteBase /

另外,如果此代码确实有效,您如何测试?我将代码放在我的.htaccess文件中,但我的主页没有显示尾部斜杠。

编辑:后续问题:

图A

RewriteRule ^(.*)$ http://www.domain.com/$1/

"图A"重写规则仅强制使用

的尾部斜杠
http://www.domain.com/post-one  

将"图A" RewriteRule也强制使用

的尾部斜杠
http://www.domain.com/category/post-one

如果没有,你如何添加一个分组,以便你可以做/ $ 1 / $ 2 / thing?
你会建议做/ $ 1 / $ 2 /件(用于搜索引擎优化)吗?这样做有什么害处吗?

1 个答案:

答案 0 :(得分:1)

  

具体来说,/ $ 1 / $ 2 /部分是正确的吗?

不,你将被重定向到有2个斜杠,因为$2没有反向引用任何东西。 $1反向引用(.*),但您没有第二个分组。你只需要:

RewriteRule ^(.*)$ /$1/ [L,R=301] 
  

我是否还需要为非www网址添加RewriteRule(见下文)?

不,RewriteRule指令的第二个参数是目标,因此除非您想将人员重定向到domain.com而不是www.domain.com否则需要添加任何内容。

  

另外,你是否只需要在.htaccess的最顶端使用下面的ONCE?

要测试,只需添加您的htaccess文件并转到不带斜杠的URL。浏览器应该被重定向,您将在位置栏中看到相同的URL,但带有一个尾部斜杠。如果这不是你所看到的,那就是其他错误。