指向同一 cPanel 帐户的多个别名域共享同一个.htaccess
文件。我需要一个特定于域的规则,仅在以下情况下将所有流量从重定向aliasdomain.com
到https://www.domain1.com
:
HTTP_HOST
目前aliasdomain.com
(有或没有 WWW 和 http/https)排除文件夹
/medias/
- 它必须仍然可以从aliasdomain.com
排除所有
*.jpg
、*.jpeg
和文件(即使这些文件位于 的根目录*.png
中)*.gif
aliasdomain.com
总是重定向到
https://www.domain1.com
根目录,没有通配符重定向,也没有重定向到非 SSL httpdomain1.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 无关,但您尝试过的代码示例是强制性的。)