Apache mod_rewrite在URL的末尾添加额外的斜杠

我正在运行CentOS 6.0,并试图使mod_rewrite从任何URL前缀删除www。 以下是我在httpd.conf中的代码:

注意:我正在使用具有完全根访问权限的VPS,所以我没有使用.htaccess文件或任何“每个目录”设置。

RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.aaronjwood\.com$ RewriteRule ^(.*)$ http://aaronjwood.com/$1 [R=301,L] 

这对所有页面都是正常工作的,只不过url会写入http://aaronjwood.com// (注意两个斜线)或http://aaronjwood.com//contact.php 。 任何人都可以帮我找出为什么发生这种情况?

由于它位于主configuration文件中,而不是每个目录( <Directory>.htaccess ),因此前导斜杠不会被上下文剥离。 它实际上是添加(或者试图添加 – 不确定Apache是​​否在大多数情况下删除额外的内容,或者客户端浏览器是否)是每次重写的第二个斜杠。

只要说明这个事实,就是你所匹配的string中包含了前导斜杠:

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

由于它直接在虚拟主机中,因此解决方法如下:删除斜线: http://aaronjwood.com$1

另一个提示:单独使用时, ^(.*)$(.*)相同。

所以这里是解决scheme:

 RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.aaronjwood\.com$ RewriteRule (.*) http://aaronjwood.com$1 [R=301,L] 

请告诉我,如果它的工作。

奥利维尔