注意:这里没有对代码进行清理,以便简单地解释问题,保持基础。我的生产代码将在处理之前清理 $_GET 。
这是我的 .htaccess 文件:
RewriteEngine on
RewriteCond %{REQUEST_URI} "/files/"
RewriteRule (.*) $1 [L]
RewriteRule ^(.*)/(.*)$ ?cat=$1&title=$2 [L]
RewriteRule ^(.*) ?cat=$1
这是我的 PHP 文件:
$cat = $_GET['cat'];
$title = $_GET['title'];
if($cat && !$title) {
echo 1;
}
if($cat && $title) {
echo 2;
}
如果我去我的测试网址:http://local.testzone.com/cat/title或http://local.testzone.com/cat
我收到 500 内部服务器错误。
如果我评论 .htaccess 文件中的最后一行:
#RewriteRule ^(.*) ?cat=$1
http://local.testzone.com/cat给了我:
未找到
在此服务器上找不到请求的 URL /cat。
http://local.testzone.com/cat/title给了我:
2
如果 cat 和 title 存在,根据我的 php echo 2,它应该做什么。
我的问题是 - 我如何修改访问文件,所以如果只有一只猫,它会回显 1?我能做到这一点的唯一方法是像这样手动设置第一级:
RewriteRule ^cat$ ?cat=cat
这有效,但不适用于我正在编写的应用程序。我需要根据 URL 中的 cat 值查询数据库。cat 值可以动态更改,我无法将其硬编码到 htaccess 文件中。标题工作正常,但如何让 cat 部分发挥作用?
希望我的要求很清楚,期待任何帮助!