【问题标题】:Redirection .htaccess depending of referer重定向 .htaccess 取决于引用者
【发布时间】:2018-06-06 14:38:59
【问题描述】:

我有一个 www.example.com/page.html 页面,上面有一个链接,该链接指向空白页面 www.example.com/folder/link.php?id=123456

由于特定原因,当我在同一页面上但使用其他语言时(页面类似于 www.example.com/page_ro.html),我无法更改此链接,需要使用重写条件来更改它同一个链接。

假设在这种情况下我需要将链接变为 www.example.com/folder/link.php?id=78910。

在这种情况下我该怎么做?我试过这个没有成功:

RewriteEngine On
Options +FollowSymLinks
RewriteCond %{HTTP_REFERER} .
RewriteCond %{HTTP_REFERER} ^http://www\.example\.com/page_ro.html [NC]
RewriteCond %(REQUEST_URI) folder/link\.php?id=123456$ [NC]
RewriteRule ^(.*) http://www.example.com/link.php?id=78910 [L]

【问题讨论】:

    标签: .htaccess mod-rewrite referer


    【解决方案1】:

    您无法使用REQUEST_URI 变量匹配查询字符串。在/folder/.htaccess 中使用QUERY_STRING 代替这样的:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /folder/
    
    RewriteCond %{HTTP_REFERER} ^http://www\.example\.com/page_ro.html [NC]
    RewriteCond %(QUERY_STRING) ^id=123456 [NC]
    RewriteRule ^(link\.php)$ $1?id=78910 [NC,L,R=302]
    

    【讨论】:

    • 您好,感谢您的帮助,非常感谢。您的代码似乎更好但无法正常工作。未观察到重定向。我对其进行了测试,它说不支持此变量:%(THE_REQUEST)。也许带有查询字符串的条件可以做到这一点,你怎么看?
    • 我尝试了许多不同的选项和变体,目标在空白页或同一页,它不想工作,我不知道为什么:(谢谢你的帮助,我学到了一些至少。
    • 注释掉RewriteCond %{HTTP_REFERER} 行,然后在浏览器中输入www.example.com/folder/link.php?id=123456 以检查它是否被重定向
    • Apache 版本未知。我猜可能是 2.2 或 2.4 + 使用 Litespeed。测试了您的代码并评论了引用行仍然无法正常工作。我在htaccess.madewithlove.be 上测试了这段代码,它仍然说这个变量不受支持:%(QUERY_STRING)
    • 如果不是 Apache,那么整个解决方案当然无法工作。
    猜你喜欢
    • 2016-08-20
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 2013-11-26
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多