我想用一些RewriteRule
s到变换:预防规则,htaccess的重写规则冲突
http://example.com/blah =>
index.php?id=blah
http://example.com/someone/blah =>
index.php?id=blah&user=someone
这里htaccess
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?id=$1 [L]
RewriteRule ^(.*)/(.*)$ /index.php?id=$2&user=$1 [L]
</IfModule>
但似乎最后两个规则不兼容:这种htaccess
,我得到一些500 Internal Server Error
。
如何创建两条规则,使它们不会相互“重叠”?
注:
每个这条规则单独工作
当我使用第二个规则,然后http://example.com/someone/blah =>
index.php?id=blah&user=someone
作品,但似乎根文件夹不再是/
但/someone/
,然后找不到CSS ...在这种情况下如何防止基础文件夹被更改?
+1出色答卷具有很好的解释 – anubhava 2014-10-08 16:50:03
非常感谢你,现在对我来说更加清晰! – Basj 2014-10-08 19:07:04
更一般的(这里没有具体说明),你将如何添加一个后备?即'如果所有列出的条件都不满足,则转到url /' – Basj 2014-10-08 20:04:45