这是我的.htaccess文件
..
RewriteRule ^songbook(?:/([a-z]))?/?$ music/songbook.php?char=$1 [L]
根据该规则,我可以使用以下网址:
http://www.example.com/songbook
http://www.example.com/songbook/
http://www.example.com/songbook/a
http://www.example.com/songbook/a/
到目前为止一切顺利。当我尝试在PHP中获取char时会出现问题,如下所示:
if (isset($_GET['char'])) {
echo 'FOUND a char';
} else {
echo 'there is NO char';
}
由于某种原因,它总是找到一个char,即使没有提供char也是如此。 我的重写规则说char是可选的,但我想我做错了。
我如何编写rewriterule以使char是可选的,以便PHP中的if条件有效?
由于
答案 0 :(得分:1)
问题是你的重写规则总是在查询字符串中定义char
,即使它是一个空字符串。
您有两种选择:
1-编辑你的php:
if (isset($_GET['char']) && !empty($_GET['char'])) {
echo 'FOUND a char';
} else {
echo 'there is NO char';
}
2-编辑您的.htaccess
:
答案 1 :(得分:1)
您可以更改.htaccess:
RewriteRule ^songbook/?$ music/songbook.php [L]
RewriteRule ^songbook/([a-z])/?$ music/songbook.php?char=$1 [L]