.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]
我正在使用以下代码重写我的一些 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]