我正在使用 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]
我进行了各种尝试,似乎满足了我的一两个要求,但并非同时满足所有要求。
感谢任何帮助。
最佳答案
我快到了。在第二行之后,我必须添加几个 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,并将所有内容保留在子文件夹中。
关于apache - htaccess - 在子文件夹中使用域强制 SSL 和 www,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51332858/