【发布时间】:2019-03-06 00:32:36
【问题描述】:
我希望在我的 .htaccess 文件中处理 3 个重写任务:
- 将 example1.com 重定向到 example2.com
- 将非 www 重定向到 www
- 将 http 重定向到 https
是的,我知道所有这些问题都已在此处单独提出和回答,但我正在尝试了解如何将这些答案组合在一起以实现最有效的重写。此外,当我尝试对这些 #1 或 #2 或 #3 中的每一个实施单独的重写时,它们会相互冲突并将我送入重定向循环。
我能找到的最接近的是 Amine Hayyoussef:Redirect multiple domains to folder + non-www to www
# redirect non-www to www ReWriteCond %{HTTP_HOST} !^www\. RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301] ReWriteCond %{HTTP_HOST} ^www.domain.com [OR] ReWriteCond %{HTTP_HOST} ^www.domain.co.uk [OR] ReWriteCond %{REQUEST_URI} !domain/ ReWriteRule ^(.*)$ domain/$1 [L]
这是我目前在 .htaccess 文件中的内容:
# Redirect example1.com to www.example2.com
RewriteCond %{HTTP_HOST} ^example1\.com$ [NC]
RewriteRule ^(.*)$ https://www.example2.com [R=301,L]
# Redirect www.example1.com to www.example2.com
RewriteCond %{HTTP_HOST} ^www.example1\.com$ [NC]
RewriteRule ^(.*)$ https://www.example2.com [R=301,L]
# Force non-www to www
RewriteCond %{HTTP_HOST} ^example2.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC]
问题在于,当导航到 http://www.example2.com 时,它无法重写任何内容,而它应该强制执行 SSL 并重写到 https://www.example2.com。
最终,我确信有一种更简洁的方法可以使用更高效的代码来解决所有 3 次重写问题。对组合这些逻辑位或将它们分开以便于维护的建议感兴趣。
谢谢!
【问题讨论】:
标签: apache .htaccess redirect mod-rewrite