【发布时间】:2015-11-10 01:21:30
【问题描述】:
请不要向我推荐超过 173 票的long and very detailed thread。它对我不起作用。我还尝试了很多其他方法(1、2、3、4)。他们都给我 TOO_MANY_REDIRECTS 或错误 500。所以,这是我的问题:
使用我当前的 .htaccess,会发生以下情况:
https://www.dukescasino.com/ - 完美运行
https://dukescasino.com/ - 重定向到上面这很棒
以下两个选项加载正常,但应该重定向到 https 版本:
这是当前的 .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
我不认为它是相关的,但如果是这样,这里是当前活动插件的列表:
- 高级自定义字段
- 一站式搜索引擎优化包
- 导航菜单的 Bop 搜索框项目类型
- 联系表格 7
- 禁用评论
- Google XML 站点地图
- WordPress.com 的 Jetpack
- 搜索和过滤
- 滑块 WD
- 桌布
- UpdraftPlus - 备份/恢复
- Wordfence 安全性
- WPide
- WP Smush
- WP 超级缓存
编辑 1 - 执行的测试:
测试 A:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
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]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
结果: ERR_TOO_MANY_REDIRECTS
测试 B:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
结果: ERR_TOO_MANY_REDIRECTS
测试 C:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
结果: ERR_TOO_MANY_REDIRECTS
测试 D:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
结果: ERR_TOO_MANY_REDIRECTS
测试 E:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI}$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}$1
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
结果: 302 找到。此外,在尝试使用 ErrorDocument 处理请求时遇到 500 Internal Server Error 错误。
【问题讨论】:
-
也许只是一个错字,但你已经拼错了
.htaccess3 次(同样的方式)?您当前的 .htaccess 文件不完整,您缺少RewriteEngine On指令。据推测,当您添加规范重定向时,您会将其添加到 .htaccess 文件的最顶部?您声明https://example.com重定向 OK,但是,您的配置文件中没有说明?这是在哪里/如何发生的?了解您实际尝试过的内容会很有用 - 那是行不通的。 -
抱歉,.htaccess 是一个错字,我现在已经修正了。我还更新了当前的 .htaccess 代码以及我对每个结果所做的所有测试。我不知道没有 www 的 https 是如何重定向到 www 版本的。谢谢
-
您通常希望设置服务器变量
HTTPS(您的结果表明并非如此)。你在代理后面吗? (测试 E 可能会导致某种“递归”404?) -
我刚刚联系了 123-reg(托管公司),以检查他们是否有任何搞砸的东西。即使我有工作的 .htaccess 并在他们的 (123reg) 控制面板中设置重定向工具,我也会得到 ERR_TOO_MANY_REDIRECTS。
标签: wordpress .htaccess http redirect https