我有
RewriteRule ^post/([^/]+)/([^/]+)$ /post/index.php?$1=$2 [NC]
执行它应该执行的操作:使用post/color/black
之类的网址将其转换为post/index.php?color=black
。
问题是,这也会影响样式表(位于post / styles / style.css)以及其他真正存在的文件。
所以问题是:如果我知道需要翻译的确切$_GET
个密钥,我怎么能将上面的RewriteRule限制为只对那些特定的密钥执行它的魔力,但是保持其他所有密钥都不变?
感谢。
答案 0 :(得分:4)
您可以使用:
^post/([^/]+)/(black|white|...)$
或
^post/([^/]+)/((?!bad keywords)[^/]+)$
答案 1 :(得分:3)
你可以:
使用-f
标志通过添加以下RewriteRules从重写过程中排除实际存在的资源:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
或者将您的静态资源存储在/post
之外 - 这是最好的,因为您可以100%确定地排除冲突的可能性,并且您可以保存Apache查看文件(这只与虽然很多交通。)