如何编写.htaccess以使HTTPS仅对子页面启用,而不对子页面启用

时间:2018-10-21 作者:au_Martin

我的域的根成功重定向到子目录,这意味着example.com 重定向到example.com/abc.

example.com 没有安装WordPress。

example.com/abc 有自己的WordPress安装。

主页位于http://example.com/abc 不是HTTPS,我也不希望它是HTTPS,但是,我确实希望所有子页都是HTTPS(例如。https://example.com/abc/xyzhttps://example.com/abc/thistoo)

我的当前.htaccess 文件是标准的WordPress文件。。。

# BEGIN WordPress

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

# END WordPress
我已经检查并尝试了许多我在这里找到的其他解决方案,但到目前为止没有任何乐趣。

p、 我知道在对.htaccess 文件

1 个回复
最合适的回答,由SO网友:MrWhite 整理而成

大概是你的.htaccess 文件位于/abc 子目录?在这种情况下,您可以执行以下操作,在除主页外的所有子页面上强制使用HTTPS:

这需要在你的.htaccess 文件:

RewriteCond %{HTTPS} !on
RewriteRule !^(index\\.php)?$ https://example.com%{REQUEST_URI} [R=302,L]
这假设SSL证书直接安装在应用程序服务器上。

否定的RewriteRule 图案!^(index\\.php)?$ 仅匹配非空(或非空index.php) URL路径,因此这不包括主页。

更改302 (临时)至301 (永久)只有在您确定它工作正常时,才能避免缓存问题。测试前请清除浏览器缓存。

旁白:

RewriteBase /abc/
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /abc/index.php [L]
由于您已设置RewriteBase 指令,您可以从RewriteRule 替换(这是RewriteBase 指令执行):

RewriteRule . index.php [L]
然而,由于.htaccess 文件位于/abc 子目录,那么您实际上不需要RewriteBase 指令或目录前缀。

结束

相关推荐

HTAccess将Invoice.php重定向到/Client/Invoice.php

我正在考虑将Wordpress安装到我的WHMCS网站中,我想这样做,以便将所有旧发票或支持票证转到新的子文件夹。当前链接如下所示https://www.example.com/viewinvoice.php?id=15515 https://www.example.com/viewticket.php?tid=955170&c=j3122yq7 我应该放什么.htaccess 因此,任何访问这些链接的人都将被重定向到:https://www.example.com/client