如果语句和正则表达式在.htaccess中

时间:2014-11-05 17:12:13

标签: .htaccess

有没有办法在htaccess中正则表达部分主机名?

示例:如果%{HTTP_HOST}匹配任何'/\w{2,}\.(?:site|local)/i' DO Something

由于

2 个答案:

答案 0 :(得分:0)

您可以使用以下规则:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} \w{2,}\.(?:site|local) [NC]
RewriteCond $1 !^(styles\.php|templates|application/views/elements\.php|hello\.txt)
RewriteRule ^((?!index\.php).+)$ index.php/$1 [L]

答案 1 :(得分:0)

Anubhava建议的一个小变体:是的,您可以使用skip标志执行if-type ladder逻辑:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !\w{2,}\.(site|local)
RewriteRule ^            -                       [skip:4]

# the next four rules will be skipped

希望这会有所帮助。

这是个人风格的问题,但我已经取消了非捕获条件:它只是一点点并发症,没有任何好处。我也更喜欢更紧凑的正则表达式,例如!^\w{2,}\.(mysite\.com|local)$,这样你就不会得到意想不到的匹配: - )