如何为这个问题编写 htaccess 文件?
How to write htaccess file for this issue?
我有 CPanel,主网站存储在 Main-Site 文件夹中,这是我当前的 .htaccess 文件。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} !Main-Site/
RewriteRule (.*) /Main-Site/ [L]
RewriteEngine On
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/ [R,L]
ErrorDocument 206 /errors/206.html
ErrorDocument 301 /errors/301.html
ErrorDocument 302 /errors/302.html
ErrorDocument 400 /errors/400.html
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 408 /errors/408.html
ErrorDocument 500 /errors/500.html
ErrorDocument 501 /errors/501.html
ErrorDocument 503 /errors/503.html
但是这个 .htaccess 文件正在影响像 docs.example.com
这样的子域
当我尝试访问子域时,它会转到 404.html
如何解决这个问题?我也被迫重定向 https
刚刚找到问题的解决方案
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/Main-Site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /Main-Site/
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ Main-Site/ [L]
Options +SymLinksIfOwnerMatch
RewriteEngine On
# Apply these rules BEFORE rules in child .htaccess files
RewriteOptions InheritDownBefore
# HTTP to HTTPS redirect for all subdomains
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
ErrorDocument 206 /errors/206.html
ErrorDocument 301 /errors/301.html
ErrorDocument 302 /errors/302.html
ErrorDocument 400 /errors/400.html
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 408 /errors/408.html
ErrorDocument 500 /errors/500.html
ErrorDocument 501 /errors/501.html
ErrorDocument 503 /errors/503.html
我有 CPanel,主网站存储在 Main-Site 文件夹中,这是我当前的 .htaccess 文件。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} !Main-Site/
RewriteRule (.*) /Main-Site/ [L]
RewriteEngine On
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/ [R,L]
ErrorDocument 206 /errors/206.html
ErrorDocument 301 /errors/301.html
ErrorDocument 302 /errors/302.html
ErrorDocument 400 /errors/400.html
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 408 /errors/408.html
ErrorDocument 500 /errors/500.html
ErrorDocument 501 /errors/501.html
ErrorDocument 503 /errors/503.html
但是这个 .htaccess 文件正在影响像 docs.example.com
当我尝试访问子域时,它会转到 404.html 如何解决这个问题?我也被迫重定向 https
刚刚找到问题的解决方案
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/Main-Site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /Main-Site/
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ Main-Site/ [L]
Options +SymLinksIfOwnerMatch
RewriteEngine On
# Apply these rules BEFORE rules in child .htaccess files
RewriteOptions InheritDownBefore
# HTTP to HTTPS redirect for all subdomains
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
ErrorDocument 206 /errors/206.html
ErrorDocument 301 /errors/301.html
ErrorDocument 302 /errors/302.html
ErrorDocument 400 /errors/400.html
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 408 /errors/408.html
ErrorDocument 500 /errors/500.html
ErrorDocument 501 /errors/501.html
ErrorDocument 503 /errors/503.html