【问题标题】:mod_rewrite by accessing the original request URI after forwardmod_rewrite 通过访问转发后的原始请求 URI
【发布时间】:2013-09-24 10:45:47
【问题描述】:

例如,我有请求 test.com/。

在 DNS 中,这个 test.com 指向 test2.com。因此我的请求来到了 test2.com

我想做以下事情。

  1. test.com/* 的所有请求都会被重定向到 test2.com(通过 DNS 映射到新服务器)。
  2. 在 test2.com 中,我必须执行以下操作。

    if(原请求是http://test.com/*) { 如果(用户代理是移动的) { if(!(User Agent 是 IOS or Android or Blackberry or Windows Phone)) { 网址重写 } } }

3.URL重写我想写一个如下的重写规则。

http://test.com/abc/index.html ---->http://test2.com/mobil/abc/index.html

我尝试过类似下面的方法。我刚来这地方。

RewriteEngine On
RewriteCond expr "%{HTTP_REFERER} -strmatch 'http://test.com'" [AND]
RewriteCond %{HTTP_USER_AGENT} Mobile [AND]
RewriteCond %{HTTP_USER_AGENT} !(IOS OR Android OR BlackBerry OR Windows Phone) [NC] 

请帮助我实现这一目标。

语法可能不正确。请帮助我正确的语法

【问题讨论】:

    标签: apache .htaccess http httprequest


    【解决方案1】:

    test.com 的请求会将HTTP_HOST 设置为test.com。您可以在规则中使用它。

    试试这个:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^test\.com$
    RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod" [NC]
    RewriteRule ^(.*)$ http://test2.com/mobil/#1 [L]
    

    【讨论】:

    • 谢谢。如果可能的话,你能否给我重写规则。我只是随意写了语法,还请帮助我正确的语法。
    • 这应该是你想要的。如果它不起作用,请随时问我。
    • 在手机中,我还想检查用户代理 o 获取手机 Iphone/Blackberry/Android/Windows 的类型。你也可以包括那个
    • 我不知道客户是如何识别自己的。互联网上应该有列表。你只需要用正确的正则表达式替换^Mobile$。我以为您对将自己标识为Mobile 的特定客户感兴趣。我将添加一个适用于 Android 的示例。
    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    相关资源
    最近更新 更多