htaccess-在子文件夹中使用域强制SSL和www

时间:2018-07-13 21:11:36

标签: apache .htaccess ssl mod-rewrite cpanel

我正在使用cPanel主机,不幸的是,该主机不允许我访问Apache conf文件以设置任何VirtualHosts。我的域名在一个子文件夹中。我现在也在尝试强制SSL以及强制www

我的要求:

  • 域必须位于子文件夹中,因为我也有其他域
  • 强制使用SSL
  • 强制www。在网址中

以下是我的.htaccess文件中的内容:

RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subfolder/$1
RewriteCond %{HTTP_HOST} ^(www.)example.com$
RewriteRule ^(/)?$ subfolder/index.php [L]

我进行了各种尝试,这些尝试似乎使我达到了我的一个或两个要求,但并非同时满足所有要求。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我快到了。在第二行之后,我必须添加几个RewriteConds。不在HTTPS上,或者不在www:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]

最后一组规则:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [NE,L,R]
RewriteRule ^$ /subfolder/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subfolder/$1 [L]

经过测试,它会强制在域中使用SSL和WWW,并将所有内容保留在子文件夹中。