0

我有以下配置,

RewriteCond %{HTTPS} !^on$ [nocase,ornext]
RewriteCond %{HTTP_HOST} !^www\. [nocase,ornext]
RewriteCond %{HTTP_HOST} !\.com$ [nocase]
RewriteRule ^(.*)$ https://www.acme.com/$1 [redirect=301,last]

目的是在请求不是 HTTPS 或以 www 开头的情况下重定向到规范 URL。或以 .com 结尾。为了与开发者引擎无缝兼容,如果 %{HTTP_HOST} 包含,例如,我想排除所有dev.internal这些指令。在这种情况下,应该立即跳过 RewriteRule。由于三个 OR 的评估优先级高于(隐式)AND,我想知道如何以及在哪里放置我的dev.internal异常......感谢您的任何建议!

//编辑:嗯...如果 OR 具有更高的优先级,不应该

RewriteCond %{HTTP_HOST} !internal\. [nocase]
RewriteCond %{HTTP:X-Forwarded-Proto} !^https$ [nocase,ornext]
RewriteCond %{HTTP_HOST} !^www\. [nocase,ornext]
RewriteCond %{HTTP_HOST} !\.com$ [nocase]
RewriteRule ^(.*)$ https://www.acme.com/$1 [redirect=301,last]

那么工作呢?

4

1 回答 1

0

如果我的理解ornext是正确的,那么是的,你的方式应该有效(其他人可以确认吗?)。

这是另一种方式,如果您不想依赖它:

RewriteCond %{HTTP_HOST} internal\. [nocase] # If it's an internal host...
RewriteRule .* - [skip=1]                    # ... skip the next rule (and leave the URL unchanged)

RewriteCond %{HTTP:X-Forwarded-Proto} !^https$ [nocase,ornext]
RewriteCond %{HTTP_HOST} !^www\. [nocase,ornext]
RewriteCond %{HTTP_HOST} !\.com$ [nocase]
RewriteRule ^(.*)$ https://www.acme.com/$1 [redirect=301,last]
于 2014-01-19T20:05:43.770 回答