【发布时间】:2019-08-12 15:08:28
【问题描述】:
我浏览了很多关于 301 重定向 (.htaccess) 的文章,但没有找到任何可以帮助解决所有 3 个重定向的文章,正如我在这个问题的标题中提到的那样(http 到 https + www 到非www + 'index.php' 到 '/')。
到目前为止我所尝试的(但无法达到预期的结果):
.htaccess file
RewriteEngine on
#redirect http to https plus www to non-www
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
#RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule (.*) https://%1%{REQUEST_URI} [NE,L,R=301]
#redirect /index.php to /
#RewriteRule ^index\.php$ / [L,R=301]
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 year"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(js|css|xml|gz)$">
Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
这工作正常,只有当涉及到http 到https,但所有三个重定向都不能同时工作,如果我尝试不同的解决方案,我会得到Error Too many redirects
【问题讨论】:
标签: php apache .htaccess redirect