在我们的应用中,我们允许自定义域,因此用户可以创建:
custom.my.example.com
我们映射到:
app.our.example.com
在我们的应用中,我们强制使用 SSL,除非用户输入如下预览 URL:
custom.my.example.com/preview/blah
目前,如果用户只输入“custom.my.example.com”,他们会收到 SSL 错误,因为当前规则仅免除了 /preview/blah 的强制重定向。我如何创建一条规则,以便如果用户输入“custom.my.example.com”而不输入 /preview,它会将他们重定向到http://custom.my.example.com/domain来表达特殊信息?
当前 .htaccess 规则:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^/preview
RewriteCond %{QUERY_STRING} !^/preview
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
我们在 CentOS 6.5 上和 Apache 2.2 上使用 CodeIgniter。
谢谢!
答案1
已修复!以下是更新后的重写版本:
RewriteEngine On
RewriteBase /
# start new rules
RewriteCond %{HTTP_HOST} !^(.*).ourdomain.com
RewriteCond %{REQUEST_URI} !^/preview
RewriteCond %{QUERY_STRING} !^/preview
RewriteRule ^(.*)$ https://app.ourdomain.com/domain [L,R=301]
# end new rules
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^/preview
RewriteCond %{QUERY_STRING} !^/preview
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]