首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >强制HTTPS &NON在具有不同域重写的子文件夹上重写错误

强制HTTPS &NON在具有不同域重写的子文件夹上重写错误
EN

Stack Overflow用户
提问于 2017-11-20 19:55:44
回答 1查看 66关注 0票数 1

我已经在/home/USER/public_html/上安装了Wordpress网站,文件夹中的.htaccess如下所示:

代码语言:javascript
运行
复制
# BEGIN Redirect Alias Site to Specific Folder
    RewriteCond %{HTTP_HOST} customwebsite.com$ [NC]
    RewriteRule ^(.*)$ /customwebsite/$1 [L]
# END Redirect Alias Site to Specific Folder

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

上述.htaccess文件中的重定向别名规则允许我将别名域路由到使用不同的文件夹,从而允许从同一个cPanel帐户运行多个网站。

/home/USER/public_html/customdomain/文件夹中,我将.htaccess规则设置为:

代码语言:javascript
运行
复制
# BEGIN WordPress
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /customdomain/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /customdomain/index.php [L]
</IfModule>
# END WordPress

它的工作非常好,但如果我试图强制HTTPS和非WWW使用每一套规则,我可以在互联网上找到.例如:

代码语言:javascript
运行
复制
<IfModule mod_rewrite.c>
    # Force HTTPS & NON-WWW
    RewriteEngine On
    RewriteCond %{HTTPS} !=on  [OR]
    RewriteCond %{HTTP_HOST} !^customdomain\.com$ [NC]
    RewriteRule ^ https://customdomain.com%{REQUEST_URI} [R=301,L]
</IfModule>

以及我能做什么,然后尝试加载以下任何一个:

  • http://customdomain.com
  • https://www.customdomain.com
  • http://www.customdomain.com

它们都重定向到:

  • https://customdomain.com/customdomain/

这在一定程度上是正确的,但部分是错误的。它不应该在域的末尾有文件夹,这会导致问题,因为URL现在是不正确的。

当然,如果我删除%{REQUEST_URI},它就修复了重定向问题,但是如果我使用的是Wordpress,例如,每个URL都会出错,并会抛出一个404页,找不到。

我怎样才能修正力HTTPS &非WWW允许这种情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-21 10:06:29

您可以使用此规则()作为中的第一个规则。

代码语言:javascript
运行
复制
RewriteEngine On
RewriteBase /customdomain/

# Force HTTPS & NON-WWW
RewriteCond %{HTTPS} !=on  [OR]
RewriteCond %{HTTP_HOST} !^customdomain\.com$ [NC]
RewriteRule .* https://customdomain.com/$0 [R=301,L,NE]

RewriteRule ^index\.php$ - [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

确保清除浏览器缓存或使用新浏览器进行测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47400022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档