在 SocialEngine 4.2.9 中将 htaccess 修改为 https 重定向后重定向问题太多 [重定向循环]
Too many redirects issue [redirect loop] after modifying htaccess to https redirect in SocialEngine 4.2.9
最近我为我们的域安装了 ssl 证书。作为 https 安全重定向的一部分,将 htaccess 更改为重定向到 https。它适用于主页。但是,当我以用户或管理员身份登录时,重定向失败并收到一条消息,如重定向太多,页面加载失败,因为重定向在 https 和 http 之间来回循环。请帮我解决这个问题。
请找到我当前使用的 htaccess 文件
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.flatparty.com/ [R,L]
RewriteRule ^(blog)($|/) - [L]
# Get rid of index.php
RewriteCond %{REQUEST_URI} /index\.php
RewriteRule (.*) index.php?rewrite=2 [L,QSA]
# Rewrite all directory-looking urls
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*) index.php?rewrite=1 [L,QSA]
# Try to route missing files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} public\/ [OR]
RewriteCond %{REQUEST_FILENAME} \.(jpg|gif|png|ico|flv|htm|html|php|css|js)$
RewriteRule . - [L]
# If the file doesn't exist, rewrite to index
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?rewrite=1 [L,QSA]
</IfModule>
当我访问 https://www.flatparty.com 时,它工作正常。但是一旦我登录就会出现重定向问题。
在 htaccess 文件中添加以下代码。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
我终于找到了问题的解决方案!!这不是 .htaccess 内容的问题,而是服务器代码的问题。以下代码是重定向循环问题的原因。
$host = $_SERVER['HTTP_HOST'];
$request_uri = $_SERVER['REQUEST_URI'];
$good_url = "http://" . $host . $request_uri;
header("HTTP/1.1 301 Moved Permanently");
header("Location: $good_url");
.htaccess 代码工作正常,每当 htaccess 重定向 url 到 https 并且上面提到的代码被重定向到 http 并最终导致无限循环并且请求永远不会完成。
感谢您的帮助和建议。
最近我为我们的域安装了 ssl 证书。作为 https 安全重定向的一部分,将 htaccess 更改为重定向到 https。它适用于主页。但是,当我以用户或管理员身份登录时,重定向失败并收到一条消息,如重定向太多,页面加载失败,因为重定向在 https 和 http 之间来回循环。请帮我解决这个问题。
请找到我当前使用的 htaccess 文件
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.flatparty.com/ [R,L]
RewriteRule ^(blog)($|/) - [L]
# Get rid of index.php
RewriteCond %{REQUEST_URI} /index\.php
RewriteRule (.*) index.php?rewrite=2 [L,QSA]
# Rewrite all directory-looking urls
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*) index.php?rewrite=1 [L,QSA]
# Try to route missing files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} public\/ [OR]
RewriteCond %{REQUEST_FILENAME} \.(jpg|gif|png|ico|flv|htm|html|php|css|js)$
RewriteRule . - [L]
# If the file doesn't exist, rewrite to index
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?rewrite=1 [L,QSA]
</IfModule>
当我访问 https://www.flatparty.com 时,它工作正常。但是一旦我登录就会出现重定向问题。
在 htaccess 文件中添加以下代码。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
我终于找到了问题的解决方案!!这不是 .htaccess 内容的问题,而是服务器代码的问题。以下代码是重定向循环问题的原因。
$host = $_SERVER['HTTP_HOST'];
$request_uri = $_SERVER['REQUEST_URI'];
$good_url = "http://" . $host . $request_uri;
header("HTTP/1.1 301 Moved Permanently");
header("Location: $good_url");
.htaccess 代码工作正常,每当 htaccess 重定向 url 到 https 并且上面提到的代码被重定向到 http 并最终导致无限循环并且请求永远不会完成。
感谢您的帮助和建议。