我知道有这个标题的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]
答案 0 :(得分:1)
将您的规则更改为:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s/+(.+?)/+[?\s]
RewriteRule /$ /%1 [R=301,L,NE]
$1
仅捕获相对于当前目录的值,但%1
正在从具有原始和完整REQUEST URL的%{THE_REQUEST}
中捕获。