mod_rewrite的;在URL的末尾有/不带尾部斜杠?

时间:2011-02-22 15:56:43

标签: .htaccess mod-rewrite url-rewriting friendly-url

我基本上尝试过下面的mode_rewrite规则。它最后使用斜杠,但是我想让它工作,无论它是否有一个尾部斜杠。基本上我希望它像这样,因为有些人认为它是正常的,最后有一个斜线,而其他人不这样做,因此无论它是否存在,我都希望它能够工作。

RewriteRule ^signup/register(.[^/]*) /signup/register.php [NC]

基本上它会像http://localhost/signup/register/一样工作,但如果我从最后删除 / ,则会出现404错误。

2 个答案:

答案 0 :(得分:20)

子模式.[^/]*至少需要一个任意字符。在你的情况下,它可能是斜杠。

你应该更好地坚持一次写作(有或没有尾随斜线)并将错误的写入重定向到正确的,如:

# remove trailing slash
RewriteRule ^(.*)/$ /$1 [L,R=301]

# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]

答案 1 :(得分:8)

普通的旧正则表达式:

RewriteRule ^signup/register/?$ /signup/register.php [NC]