.htaccess适用于使用https的Cloudflare后面的MODx Evo站点

时间:2016-02-18 18:55:00

标签: .htaccess cloudflare

看起来有点简单但我无法做到这一点,所以我会请你帮忙:

我在MODx Evo上制作了一些小网站。它被置于CloudFlare(免费资费,使用的非常基本功能)背后,主要用于他们的免费https。现在我尝试只设置一个地址作为基地:

我使用默认的MODx Evo .htaccess来提供漂亮的URL和一些基本的PHP设置,如下所示:

AddDefaultCharset utf-8

RewriteEngine On
RewriteBase /

# Fix Apache internal dummy connections from breaking [(site_url)] cache
RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
RewriteRule .* - [F,L]

# Exclude /assets and /manager directories and images from rewrite rules
RewriteRule ^(manager|assets|js|css|images|img)/.*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]

# For Friendly URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

以下是从www到非www域重定向的部分,而且是库存设置。

现在我需要再做两个重定向条件:

  1. http - > HTTPS
  2. www - >非www
  3. 这就是我被困住的地方。我可以很容易地将非www重定向到www,但是当我添加http / https部分时,我正在获得301循环。

    网站本身在Apache上(Cloudflare添加了他们特殊的Nginx版本)。

    请建议我应该在上面显示的 .htaccess 中添加哪些内容,以便将上面显示的所有 3个域变体很好地重定向到 https://example.org 一个?

2 个答案:

答案 0 :(得分:0)

令我惊讶的是,这可能与Cloudflare本身的页面规则有关,这对我来说是最好的解决方案,因为没有后端(比如我在Cloudflare后面的服务器)。

谢谢Cloudflare!

答案 1 :(得分:0)

.httacces可能不起作用

我通过编辑配置(https://gitlab.com/snippets/1906338)建立了解决方案

要通过cloudflare修复https,需要在manager / includes / config.inc.php中像这样编辑var $secured-添加检查cloudflare $_SERVER["HTTP_CF_VISITOR"]

$secured = (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') || 
(isset($_SERVER["HTTP_CF_VISITOR"]) && $_SERVER["HTTP_CF_VISITOR"] == '{"scheme":"https"}');