为什么example.com/foo/有效但是example.com/foo没有?

Emr*_*din 1 php .htaccess

我有一个非常小的问题.我创建了一个.htaccess文件,假设要重写一个条件example.com/user/foo/bar,example.com/user.php?username=$1&tab=$2因为用户名将是foo,查看选项卡必须是bar.

但是当没有提供完全类似于条形数据的example.com/user/foo/用户使用默认选项卡时(默认选项卡在script.php文件中生成).

但我看到一些网站,他们可以像example.com/user/foo那样做,没有/ at的行.当我example.com/foo去用户时,它说找不到页面.我的correspoding .htaccess行是:

RewriteEngine On
RewriteRule ^user/(.*)/(.*)$ user.php?username=$1&tab=$2 [L]
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.

slu*_*ion 5

您的匹配规则是^user/(.*)/(.*)$,这意味着第二个斜杠必须在那里(因为它已指定),但之后的文本是可选的(因为*匹配零个或多个字符).

真的,我会添加两个重写规则,以不同方式(并防止使用复杂的正则表达式),例如

RewriteRule ^user/(.*)/(.*)$ user.php?username=$1&tab=$2 [L]
RewriteRule ^user/(.*) user.php?username=$1 [L]
Run Code Online (Sandbox Code Playgroud)