首页 > 解决方案 > .htaccess 从子域重定向到子目录和 https 规则

问题描述

我的网站有两种不同的本地化版本。

1)第一个是英文版:www.example.com

2)第二个是西班牙语版本:es.example.com

我正在将西班牙语版本移至 www.example.com/ES

我当前的 .htaccess 文件将对 example.com 的调用重定向到 www.example.com,如下所示:

 RewriteCond %{HTTPS} off [OR]
 RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] 
 RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

现在我想添加它以将我的子域重定向到子目录,所以我尝试了这个:

RewriteCond %{HTTP_HOST} ^es\.example\.com
RewriteRule ^(.*)$ https://www.example.com/ES/$1 [R=301]

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

但这似乎将所有对 es.example.com 的调用都指向 www.example.com 而不是 www.example.com/ES

有什么建议么?

编辑:下面添加了完整的 .htaccess:

AddType application/x-httpd-php .php .htm .html

AddDefaultCharset UTF-8

RewriteEngine On



RewriteCond %{HTTP_HOST} ^es\.example\.com
RewriteRule ^(.*)$ https://www.example.com/ES/$1 [R=301,L]




 RewriteCond %{HTTPS} off [OR]
 RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] 
 RewriteCond %{HTTP_HOST} !^local
 RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]





<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On 
# Default directive
ExpiresDefault "access plus 1 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year"
# Images
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/svg "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
# Flash
ExpiresByType application/x-shockwave-flash "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 week"
# Javascript
ExpiresByType application/javascript "access plus 1 week"
</IfModule>





<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)(\.gz)?$">
    Header unset ETag
    FileETag None
  </FilesMatch>



  <IfModule mod_headers.c>
    <FilesMatch ".(js|css|xml|gz|html|svg|swf)$">
      Header append Vary: Accept-Encoding
    </FilesMatch>
  </IfModule>





<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-shockwave-flash
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/opentype

# For Olders Browsers Which Can't Handle Compression
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>




ErrorDocument 400 /400.html
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html`

标签: .htaccess

解决方案


推荐阅读