htaccess RewriteRule:过滤某些单词

时间:2011-08-07 18:43:25

标签: apache .htaccess

我有

RewriteRule ^post/([^/]+)/([^/]+)$ /post/index.php?$1=$2 [NC]

执行它应该执行的操作:使用post/color/black之类的网址将其转换为post/index.php?color=black

问题是,这也会影响样式表(位于post / styles / style.css)以及其他真正存在的文件。

所以问题是:如果我知道需要翻译的确切$_GET个密钥,我怎么能将上面的RewriteRule限制为只对那些特定的密钥执行它的魔力,但是保持其他所有密钥都不变?

感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用:

^post/([^/]+)/(black|white|...)$

^post/([^/]+)/((?!bad keywords)[^/]+)$

答案 1 :(得分:3)

你可以:

  • 使用-f标志通过添加以下RewriteRules从重写过程中排除实际存在的资源:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
  • 或者将您的静态资源存储在/post之外 - 这是最好的,因为您可以100%确定地排除冲突的可能性,并且您可以保存Apache查看文件(这只与虽然很多交通。)