【发布时间】:2020-02-24 16:51:52
【问题描述】:
问题:
我的网络托管服务提供商 (apache) 支持在一个帐户下拥有多个域,这些域包含 wordpress 安装,并通过路径中的 ftp 客户端进行管理:
www/domains/domain1.tld
www/domains/domain2.tld
当我打开 https://domain2.tld 时,一切正常。
无论如何.. 如果我没有指定“https://”,那么它会被重定向到 https://domain1.tld
我有什么:
在 www/domains 我有这个 .htaccess 文件
RewriteEngine On
# domains
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]
# subdomains
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]
# domains proper redirection when / is missing
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]
# subdomains proper redirection when / is missing
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]
然后在每个 WP 安装中我都有 wordpress .htacces 文件
# BEGIN WordPress
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
- 我确实检查了数据库和 wp-config,它们都没有包含指向 https://domain1.ltd
- 两个域都使用 Lets Encrypt 证书
- 我确实使用 notepad++ 在 domain2.ltd 本地搜索了 domain1.ltd 的出现,但没有找到,禁用所有插件也无济于事
强制 https 重定向也不起作用:
RewriteCond %{HTTP_HOST} ^domain2\.tld [NC]
RewriteRule (.*) https://www.domain2.tld/$1 [R=301,QSA,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.domain2.tld/$1 [R=301,L]
说实话,我想不出下一步该做什么。任何人都知道如何解决这个问题?我的猜测是 www/domains .htaccess 文件或网络主机有问题。
谢谢你们!
【问题讨论】:
-
您可以访问 apache 配置吗?特别是虚拟主机文件?
-
遗憾的是我没有.. 只有.htaccess
-
完全禁用 WP .htaccess 文件,请求一个静态的
foo.txt文件,您放入每个 WP 安装的基本文件夹 - 那么同样的问题吗?然后我会请宿主修复它,这似乎是他们的部分设置错误。 -
@04FS 只返回 403 禁止错误
-
什么,使用 no .htaccess 并且只请求物理上存在的文件? (您是否确保 Web 服务器可以读取该文件?)
标签: wordpress apache .htaccess http-status-code-301 lets-encrypt