请求协助编写.htaccess规则:基于HTTP_REFERER跳转至指定语言页面
实现基于HTTP_REFERER的Apache重定向规则
没问题,我来帮你搞定这个.htaccess规则,同时会拆解每一部分的作用,方便你理解和调整。
首先,把下面这段代码放到你的站点根目录的.htaccess文件里(如果文件不存在,直接新建一个即可):
# 开启URL重写引擎 RewriteEngine On # 匹配HTTP_REFERER为http://www.mysitea.com的请求 RewriteCond %{HTTP_REFERER} ^http://www\.mysitea\.com/?$ [NC] # 将匹配到的请求重定向到mysiteb的法语专区 RewriteRule ^(.*)$ http://www.mysiteb.com/fr [R=302,L]
规则拆解说明:
RewriteEngine On:必须放在最开头,用来启用Apache的URL重写功能,没有这行后面的规则都不会生效。RewriteCond %{HTTP_REFERER} ^http://www\.mysitea\.com/?$ [NC]:%{HTTP_REFERER}:这是Apache提供的环境变量,用来获取请求的来源Referer地址。^http://www\.mysitea\.com/?$:正则表达式,精确匹配http://www.mysitea.com(包括末尾可能带的斜杠/),注意这里的.要转义成\.,因为正则里.代表任意字符。[NC]:标记表示匹配时不区分大小写(比如用户Referer是大写的HTTP://WWW.MYSITEA.COM也能匹配到),如果不需要可以去掉。
RewriteRule ^(.*)$ http://www.mysiteb.com/fr [R=302,L]:^(.*)$:匹配当前请求的所有URL路径。http://www.mysiteb.com/fr:目标重定向地址,也就是你要跳转的法语专区。[R=302,L]:R=302表示临时重定向(如果需要永久重定向可以改成R=301),L表示这是最后一条规则,匹配后不再执行后续规则。
额外注意事项:
- 确保你的主机支持
.htaccess文件(大多数共享主机都支持,但VPS/独立服务器可能需要在Apache配置里开启AllowOverride All)。 - HTTP_REFERER是可以被客户端修改或屏蔽的,所以不要把这个作为唯一的验证逻辑,用来做跳转引导是完全没问题的。
- 如果需要匹配来自
mysitea.com所有子页面的Referer(比如http://www.mysitea.com/page1.html),可以把正则改成^http://www\.mysitea\.com/(去掉末尾的?$)。
内容的提问来源于stack exchange,提问作者Sumit Bot
相关产品推荐
相关产品推荐

