有没有办法在htaccess中正则表达部分主机名?
示例:如果%{HTTP_HOST}
匹配任何'/\w{2,}\.(?:site|local)/i'
DO Something
由于
答案 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)$
,这样你就不会得到意想不到的匹配: - )