.htaccess禁止在重写的URL上使用斜杠

时间:2015-03-16 17:51:43

标签: apache .htaccess mod-rewrite

我使用以下代码重写了一些网址:

RewriteEngine On
RewriteRule ^login/?$ login.php [NC,L]
RewriteRule ^register/?$ register.php [NC,L]
RewriteRule ^logout/?$ logout.php [NC,L]
RewriteRule ^([a-zA-Z]+)/?$ game.php?game=$1 [NC,L]

当您访问/登录或/注册或其他任何内容时它都很有用,但是当您添加尾部斜杠时,它会丢失样式表。我尝试在头部添加一个基本链接,但这比修复更糟糕(让事情认为他们来自外部网址)。

我试过这段代码:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

但它会将您带到我的http://www.example.com/login,而不是说http://www.example.com/directory/another/login(文件全部位于此处)。

是否有一种简单的方法可以删除尾部斜杠?

1 个答案:

答案 0 :(得分:1)

为.htaccess所在的子目录设置RewriteBase并相应地调整尾随斜杠规则:

RewriteEngine On
RewriteBase /directory/another/

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

RewriteRule ^(login|register|logout)/?$ login.php [NC,L]
RewriteRule ^([a-zA-Z]+)/?$ game.php?game=$1 [NC,L]