.htaccess 如何合并重写(使用子目录作为根目录,同时强制使用https和非www)

bfrts1fy  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(163)

如何合并.htaccess重写以实现以下目标:

  • 访问域的根目录(例如.com)的用户应该看到并导航子目录(例如.com/subdirectory)的内容。
  • 应该强制使用https和非www。

这适用于将子目录用作根目录:

RewriteEngine On

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

RewriteCond %{HTTP_HOST} ^(www.)?example.com$ [NC]
RewriteRule ^(/)?$ subdirectory/index.html [L]

问题:

  • 我是否应该在“RewriteEngine On”和第一个RewriteCond之间添加另外两个规则(强制https和非www)?
  • 是每个规则都使用原始请求,还是原始请求随每个规则一起修改?
vpfxa7rd

vpfxa7rd1#

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteRule ^$ subdirectory/ [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ subdirectory/$1 [L]

用法=这些规则将使所有URL指向https,而非www,如果有人访问example.com,它将重定向到example.com/subdirectory。

相关问题