我有一个非常小的问题。我创建了一个.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]
请帮我解决这个问题。
答案 0 :(得分:5)
您的匹配规则是^user/(.*)/(.*)$
,这意味着第二个斜杠必须在那里(因为它已指定),但之后的文本是可选的(因为{{1}匹配零个或多个字符)。
实际上,我添加了两个重写规则,以区别对待(并防止使用复杂的正则表达式),例如。
*
答案 1 :(得分:2)
或者,您可以将第二个参数设为可选:
RewriteRule ^user/([^/]+)/?(?:(.*)|)$ user.php?username=$1&tab=$2 [L]
只要您不介意$_GET['tab']