htaccess有多个级别

时间:2014-08-09 17:40:05

标签: .htaccess

我在这里看到了htaccess指南,但我认为我做错了。这是我的示例代码。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ page.php?p=$1&c=$2&gc=$3

我面临的问题是,有3个级别的页面,每个级别都有链接。我经常得到" Not Found"如果我要去第一个参数,甚至第二个参数。它只显示第3个参数。

我想知道的是,我如何配置我的htaccess以获取特定页面而不会将链接结束为" Not Found"。

1 个答案:

答案 0 :(得分:1)

如果路径包含3个部分,则您的规则仅匹配。对于路径包含2个部分且路径包含1个部分的情况,您需要再创建2个规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/$ page.php?p=$1&c=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ page.php?p=$1 [L]

我还建议在您已有的规则上使用[L]标志。这样可以加速一些事情,也可以防止奇怪的行为,特别是当你使用重定向时。