我在这里看到了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"。
答案 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]
标志。这样可以加速一些事情,也可以防止奇怪的行为,特别是当你使用重定向时。