Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php HTTP到HTTPS 301重定向错误_Php_Wordpress_.htaccess_Redirect_Https - Fatal编程技术网

Php HTTP到HTTPS 301重定向错误

Php HTTP到HTTPS 301重定向错误,php,wordpress,.htaccess,redirect,https,Php,Wordpress,.htaccess,Redirect,Https,我刚刚在Wordpress网站上安装了SSL,现在正试图将整个网站重定向到https 在Chrome、IE、Firefox、手机等浏览器中,它似乎对我有效。然而,如果我通过各种在线状态检查或网站速度检查运行我的网站,它们都会返回一个错误,并说我的网站无法访问。例如: tools.pingdom.com-说我的网站有一个重定向循环 isitdownrightnow.com-说我的网站关闭了 sitestatus.net-表示我的站点存在301永久移动错误 等等。所以,显然有些地方出了问题。这是我的

我刚刚在Wordpress网站上安装了SSL,现在正试图将整个网站重定向到https

在Chrome、IE、Firefox、手机等浏览器中,它似乎对我有效。然而,如果我通过各种在线状态检查或网站速度检查运行我的网站,它们都会返回一个错误,并说我的网站无法访问。例如:

tools.pingdom.com-说我的网站有一个重定向循环

isitdownrightnow.com-说我的网站关闭了

sitestatus.net-表示我的站点存在301永久移动错误

等等。所以,显然有些地方出了问题。这是我的.htaccess代码:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !^https$ [NC]
RewriteRule ^(.*) https://www.low-caloriediet.com/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Redirect 301 /guest-post-guidelines https://www.low-caloriediet.com/contact
Redirect 301 /breakfasts-food https://www.low-caloriediet.com/food/breakfasts-food
Redirect 301 /lunch-dinners https://www.low-caloriediet.com/food/lunch-dinners
Redirect 301 /appetizers https://www.low-caloriediet.com/food/appetizers
Redirect 301 /snacks https://www.low-caloriediet.com/food/snacks
Redirect 301 /desserts-food https://www.low-caloriediet.com/food/desserts-food
Redirect 301 /low-calorie-drinks https://www.low-caloriediet.com/food/low-calorie-drinks
Redirect 301 /extras https://www.low-caloriediet.com/food/extras
Redirect 301 /calorie-granola https://www.low-caloriediet.com/food/calorie-granola
Redirect 301 /calorie-pasta https://www.low-caloriediet.com/food/calorie-pasta
Redirect 301 /calorie-chocolate https://www.low-caloriediet.com/food/calorie-chocolate
Redirect 301 /calorie-cookies https://www.low-caloriediet.com/food/calorie-cookies
Redirect 301 /calorie-yogurt https://www.low-caloriediet.com/food/calorie-yogurt
Redirect 301 /calorie-soup https://www.low-caloriediet.com/food/calorie-soup
Redirect 301 /calorie-muffins https://www.low-caloriediet.com/food/calorie-muffins
Redirect 301 /calorie-butter https://www.low-caloriediet.com/food/calorie-butter
Redirect 301 /calorie-pancakes https://www.low-caloriediet.com/food/calorie-pancakes
Redirect 301 /calorie-beer-alcohol https://www.low-caloriediet.com/food/calorie-beer-alcohol
Redirect 301 /calorie-oatmeal https://www.low-caloriediet.com/food/calorie-oatmeal
Redirect 301 /calorie-cereal https://www.low-caloriediet.com/food/calorie-cereal
Redirect 301 /calorie-bread https://www.low-caloriediet.com/food/calorie-bread
Redirect 301 /calorie-chips https://www.low-caloriediet.com/food/calorie-chips
Redirect 301 /calorie-crackers https://www.low-caloriediet.com/food/calorie-crackers
因为如果我删除它,我可以访问我的网站tools.pingdom.com等等。有什么想法吗?谢谢

编辑:服务器是NGINX

RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

这是从已经有这样一个答案的

将WP规则更改为:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP:X-Forwarded-Proto} !^https$ [NC]
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
#开始WordPress
重新启动发动机
重写cond%{HTTP:X-Forwarded-Proto}^https$[NC]
重写cond%{SERVER\u PORT}=443
重写规则^https://%{HTTP_HOST}%{REQUEST_URI}[R=301,L,NE]
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress

确保您的主页中有
https
和WP permalink设置中的站点URL

,这创建了一个重定向循环。可能是因为我的站点已经设置为在Wordpress常规设置中重定向到www版本?您的站点和WP选项表中有
https
吗?@anubhava是的,我有。“编辑:服务器是NGINX”-上面的
.htaccess
文件是Apache。NGINX可能被用作处理SSL的前端代理(因此需要检查
X-Forwarded-Proto
HTTP请求头)。您的站点本身(在Apache上)通过HTTP(端口80)提供内容到Nginx代理,Nginx向客户端提供SSL。规则中没有重定向循环。打开
firebug
,然后访问您的页面,查看您在Net选项卡中得到的重定向。我怀疑WP permalink设置不正确。当我将您的代码放入我的htaccess并运行firebug时,它只会显示https:www.low-carriedit.com/301一次又一次地永久性地。有什么我在寻找的吗?我的永久链接结构是这样设置的:当我打开
https://www.low-caloriediet.com/
我没有收到任何重定向循环。这条规则仍然有效吗?不,我用我的旧规则替换了它。要我快速将其放回吗?是的,请放回以便我可以从
curl
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP:X-Forwarded-Proto} !^https$ [NC]
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress