模式重写; 在URL的末尾有/不带尾部斜杠?

PHP*_*VER 9 .htaccess mod-rewrite friendly-url url-rewriting

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

RewriteRule ^signup/register(.[^/]*) /signup/register.php [NC]
Run Code Online (Sandbox Code Playgroud)

基本上它会工作,http://localhost/signup/register/但如果我从最后删除/它会给出404错误.

Gum*_*mbo 20

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

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

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

# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)

  • 对不起,我也想问; 我应该在.htaccess中设置永久重定向到友好网址吗?为什么在谷歌我的网站只是使用像signup/register.php,不知道我是否应该进行永久重定向?我知道该对他们怎么办,但我想我会问.谢谢 (2认同)

god*_*nte 9

普通的旧正则表达式:

RewriteRule ^signup/register/?$ /signup/register.php [NC]
Run Code Online (Sandbox Code Playgroud)


Jos*_*hua 7

...    
RewriteRule ^(url-rewrite)/?$ page.php [NC]
...
Run Code Online (Sandbox Code Playgroud)

这 ?after / 指定在您的 url 重写之后不能有或有一个 /,因此无论有或没有尾随 /,它都会接受它