如何修复.htaccess mod_rewrite和尾部斜杠的问题

时间:2012-02-12 03:04:21

标签: .htaccess mod-rewrite

我正在使用.htaccess mod_rewrite来获取更好的网址。

以下是我的.htaccess文件的一部分,将/artist.php?id=123456转换为/artist/123456,将/artists.php?culture=arabic转换为/artists/arabic,然后移除.php:

RewriteRule ^artist/([0-9]+) artist.php?id=$1
RewriteRule ^artists/(.+) artists.php?culture=$1
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

它可以工作,但是如果我在/末尾添加一个尾部斜杠/artist/arabic/,则会抛出404错误。我怎样才能解决这个问题?简单地删除尾部斜杠可能会起作用,但我不知道如何做到这一点。我只是不希望用户不小心添加/或其他东西,然后因为认为页面不存在而感到困惑。

提前致谢!

1 个答案:

答案 0 :(得分:3)

您只需要使用/?

将可选的尾部斜杠添加到第一个规则中
# Optional trailing slash...
RewriteRule ^artist/([0-9]+)/? artist.php?id=$1
#--------------------------^^^^
RewriteRule ^artists/(.+) artists.php?culture=$1
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]