你如何将这两个.htaccess RewriteRules合二为一?

时间:2009-08-26 19:36:35

标签: apache .htaccess mod-rewrite

好的我还有另一个问题,我是初学者。

我有这个RewriteRule,它正确地重定向查询但不允许我使用其他目录:

RewriteRule ^([0-9A-Za-z]+)/?$ /query.php?id=$1 [L]

现在这个RewriteRule要跳过所有这些目录,但现在需要注释上面的规则才能实现。

RewriteRule ^(css|js|admin|pages|includes|images)(/|$) - [L]

我可以将两者结合起来吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:4)

RewriteRule按照它们在文件中出现的顺序进行检查,因此如果先放置css|js|admin|pages|includes|images规则,它将首先匹配并在达到其他规则之前停止重写过程。只需确保将[L]标记保留在该规则的末尾。

答案 1 :(得分:0)

还有这个巧妙的伎俩:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+) query.php?id=$1 [L]

也就是说,如果文件路径不是现有的文件或目录,请将请求发送到PHP脚本(这样您可以动态加载某个模块或显示有用的404页面。)