我知道经常讨论和解决“如何强制使用 HTTPS + WWW”这个话题,总的来说它对我有用。
但是由于我现在从 CakePHP 获得了一个特定的预定义 .htaccess,我不知道如何包含它。
CakePHP 的 .htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
如果我将 HTTPS/WWW Forcing 的普通代码放在该代码的前面或后面,它就无法正常工作,因为所有请求都设置为根目录而不是例如/接触。
通常我使用:
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteRule ^ https://www.mydomain.com%{REQUEST_URI} [R=301]
但你不能只包括上面的...
谁能帮帮我包括 HTTPS/WWW 强制在上面的 .htaccess 中?
最佳答案
通用的方法是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
无需硬编码域名。从 http 切换到 https 时,请求也不会重定向到 root
关于regex - 在 CakePHP .htaccess 中强制使用 SSL+WWW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7268495/