htaccess 将特定域上的所有流量重定向到另一个域,排除文件夹和文件类型

htaccess 将特定域上的所有流量重定向到另一个域,排除文件夹和文件类型

指向同一 cPanel 帐户的多个别名域共享同一个.htaccess文件。我需要一个特定于域的规则,仅在以下情况下将所有流量从重定向aliasdomain.comhttps://www.domain1.com

  • HTTP_HOST目前aliasdomain.com(有或没有 WWW 和 http/https)

  • 排除文件夹/medias/- 它必须仍然可以从aliasdomain.com

  • 排除所有*.jpg*.jpeg和文件(即使这些文件位于 的根目录*.png中)*.gifaliasdomain.com

  • 总是重定向到https://www.domain1.com根目录,没有通配符重定向,也没有重定向到非 SSL http

  • domain1.com需要被排除,因此如果.htaccess存在相同的文件domain1.com则不会干扰。

我尝试调整在 StackOverflow 上找到的各种代码片段,但却无法让它工作 :( 我在那里问了一个问题,但是版主告诉我应该在 ServerFault 上提问,所以我来了... 非常感谢您的帮助!

答案1

请尝试以下操作:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?aliasdomain\.com [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g|png|gif)$ [NC]
RewriteRule !^medias https://www.domain1.com/ [R=302,L]

RewriteRule 图案确保规则仅在以下情况下才被处理不是请求以 开头的 URL /medias。(!前缀否定了 Apache mod_rewrite 中的正则表达式。)

第一个RewriteCond指令检查所请求的主机是否aliasdomain.com仅有(有或没有www子域)。 (因此,domain1.com自然被排除。)

第二RewriteCond条指令排除对图像文件的请求。

如果希望永久重定向,则将302(临时)重定向更改为(永久),并且只有当您确定它正常工作时(因为 301 被浏览器严格缓存)。301

测试前请清除浏览器缓存,因为任何先前/错误的 301 都可能已被缓存。(或者在打开浏览器工具并禁用缓存的情况下进行测试。)

我在那里问了一个问题,但版主告诉我去 serverfault 上问

说实话,这个问题可能更适合专业网站管理员堆栈,而不是 ServerFault!(虽然这不一定与 StatckOverflow 无关,但您尝试过的代码示例是强制性的。)

相关内容