看起来有点简单但我无法做到这一点,所以我会请你帮忙:
我在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域重定向的部分,而且是库存设置。
现在我需要再做两个重定向条件:
这就是我被困住的地方。我可以很容易地将非www重定向到www,但是当我添加http / https部分时,我正在获得301循环。
网站本身在Apache上(Cloudflare添加了他们特殊的Nginx版本)。
请建议我应该在上面显示的 .htaccess 中添加哪些内容,以便将上面显示的所有 3个域变体很好地重定向到 https://example.org 一个?
答案 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"}');