如何编写.htaccess规则将ico.*子域名的图标文件永久重定向至对应文件夹?
当然可以实现这个需求!下面是针对你场景的.htaccess规则配置,以及对应的详细解释:
解决方案:.htaccess规则配置
将以下代码添加到你的ico.*域名对应的网站根目录下的.htaccess文件中:
RewriteEngine On # 捕获主机名中ico.后面的核心域名部分 RewriteCond %{HTTP_HOST} ^ico\.(.+)$ [NC] # 匹配根目录下指定格式的图标文件 RewriteCond %{REQUEST_URI} ^/(.+\.(ico|gif|png|svg))$ [NC] # 执行永久重定向到目标路径 RewriteRule ^ /www.%1/%2 [R=301,L]
规则解释
RewriteEngine On:开启Apache的URL重写引擎,这是所有重写规则生效的前提。RewriteCond %{HTTP_HOST} ^ico\.(.+)$ [NC]:专门匹配以ico.开头的域名,把ico.后面的部分(比如example0.com)捕获到变量%1里,[NC]标记表示匹配时不区分大小写,避免因域名大小写问题导致规则失效。RewriteCond %{REQUEST_URI} ^/(.+\.(ico|gif|png|svg))$ [NC]:匹配直接访问根目录下的图标文件,把文件名(比如favicon.ico)捕获到变量%2里,同时限定了仅处理你指定的四种图标格式。RewriteRule ^ /www.%1/%2 [R=301,L]:执行重定向操作,把原本的请求路径替换成/www.%1/%2(比如/www.example0.com/favicon.ico),R=301表示这是永久重定向,适合你的需求场景;L表示这是最后一条规则,处理完这条后就不再执行后续规则。
注意事项
- 确保你的Apache服务器已经开启了
mod_rewrite模块,如果不确定可以联系主机服务商确认。 - 测试阶段可以先把
R=301改成R=302(临时重定向),确认规则生效后再改回301,避免浏览器缓存错误的重定向规则。 - 把
.htaccess文件放在ico.*域名对应的网站根目录下,确保服务器允许使用.htaccess文件(主机配置中AllowOverride需设为All或FileInfo)。
内容的提问来源于stack exchange,提问作者Brian Brown PhD
相关产品推荐
相关产品推荐

