.htaccess 禁止在重写的 URL 上使用尾部斜线

.htaccess disallow trailing slash on re-written URLs

我正在使用以下代码重写我的一些 URL:

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= [NC,L]

当您访问 /login 或 /register 或任何其他内容时,它工作得很好,但是当您添加尾部斜杠时,它会丢失样式表。我试过在头部添加一个基础 link,但这比修复更混乱(让事情认为它们来自外部 URL)。

我试过这个代码:

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

但它会将您带到我的 http://www.example.com/login, instead of say http://www.example.com/directory/another/login(所有文件所在的位置)。

有没有简单的方法来删除尾部斜杠?

为这个 .htaccess 所在的子目录创建一个 RewriteBase 并相应地调整你的尾部斜线规则:

RewriteEngine On
RewriteBase /directory/another/

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

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