regex - 在 CakePHP .htaccess 中强制使用 SSL+WWW

标签 regex .htaccess cakephp

我知道经常讨论和解决“如何强制使用 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/

相关文章:

python - 如何拆分字符串并选择特定字段

java - 正则表达式失败

PHP 文件由浏览器下载,而不是由 Laravel 项目处理

mysql - CakePHP:出现不切实际的数据库错误

php - 如何在 php 中为 www-data 用户提供所需的权限

c# - 使用参数 c# 查找列表的索引

python - 值错误: invalid\x escape for\x{ffff} in String

.htaccess - HTTPS SEO 和 Canonical

php - .htaccess mod_rewrite 未知数量的 GET 表单变量

php - 警告 : creating default object from empty value in cakephp