删除网址末尾的尾部斜杠

时间:2016-07-05 06:46:02

标签: .htaccess redirect

我知道有这个标题的bajillian问题,我已经尝试了所有这些问题。我试图做的是重定向

localhost/site/tours/picnics/

localhost/site/tours/picnics

但是我尝试过的每一个代码(例如这个代码)

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=301,L]

出于某种原因将我重定向到localhost/picnics。我不明白为什么会这样。我甚至试过RewriteBase /site/,但它没有任何区别。有人能指出这段代码中的问题吗?

修改:这是我完整的htaccess文件

RewriteEngine On
#RewriteBase /site/
RewriteRule ^destinations/(.*)$ destinations.php?destId=$1 [NC,L]
#RewriteRule ^tours/? tour-listing.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=301,L]

RewriteRule ^tours/?(.*)$ tour-listing.php?cat=$1 [NC,L]
RewriteRule ^tour/([0-9a-zA-Z]+)$ tour.php?id=$1 [NC,L]
RewriteRule ^hotel/([0-9a-zA-Z]+)$ hotel-details.php?id=$1 [NC,L]

1 个答案:

答案 0 :(得分:1)

将您的规则更改为:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s/+(.+?)/+[?\s]
RewriteRule /$ /%1 [R=301,L,NE]

$1仅捕获相对于当前目录的值,但%1正在从具有原始和完整REQUEST URL的%{THE_REQUEST}中捕获。