通过将WWW重定向到WWW来删除尾随

时间:2015-12-25 17:23:38

标签: regex .htaccess

我想删除网址中的所有Trailing Slash。例如:

This: mysite.com/category/ or mysite.com/category/id1/

我想要这个(删除/ ):

To: mysite.com/category or mysite.com/category/id1

我在使用.htaccess调整正则表达式方面存在严重问题 遗憾!

这是我目前的.htaccess:

Options -Indexes
#-- custon error pages
ErrorDocument 404 /404.php
ErrorDocument 403 /403.php
ErrorDocument 405 /405.php
#-- enable RewriteEngine and use parameter "p" --
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1
#-- now WWW to WWW --
RewriteCond %{HTTP_HOST} ^mysite.com$
RewriteRule ^/?$ "http\:\/\/www\.mysite\.com\/" [R=301,L]

非常感谢任何帮助!

圣诞快乐! :)

1 个答案:

答案 0 :(得分:0)

无需转义目标网址中的字符。

我更正了/重新调整了你的htaccess规则,并添加了一条删除尾部斜杠的规则。

Options -Indexes
#-- custon error pages
ErrorDocument 404 /404.php
ErrorDocument 403 /403.php
ErrorDocument 405 /405.php
#-- enable RewriteEngine and use parameter "p" --
RewriteEngine On
#-- now WWW to WWW --
RewriteCond %{HTTP_HOST} ^mysite.com$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R,L]

#Remove trailing slashes
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/+$ $1 [L,R]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1

在测试之前清除浏览器缓存。