Mod rewrite 移动重定向=Mod#u重写无限循环,什么';怎么了?

Mod rewrite 移动重定向=Mod#u重写无限循环,什么';怎么了?,mod-rewrite,cookies,mobile,Mod Rewrite,Cookies,Mobile,嘿,大家好,我正试图重定向到我的子目录m中的移动站点, 更糟糕的是,我试图只在索引页上执行重定向,然后只有在没有设置cookie(mobile)的情况下(以便我可以将用户发送回桌面站点),无论如何,我的mod rewrite陷入了无休止的循环。htaccess的代码如下: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !^/m/.*$ RewriteCond %{HTTP_COOKIE} !^.*mobile.*$ [NC]

嘿,大家好,我正试图重定向到我的子目录
m
中的移动站点, 更糟糕的是,我试图只在索引页上执行重定向,然后只有在没有设置cookie(
mobile
)的情况下(以便我可以将用户发送回桌面站点),无论如何,我的mod rewrite陷入了无休止的循环。htaccess的代码如下:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/m/.*$
RewriteCond %{HTTP_COOKIE} !^.*mobile.*$ [NC]
RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sony|symbian|nokia|samsung|mobile|windows ce|epoc|opera mini|IEmobile|DoCoMo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "nitro|j2me|midp-|cldc-|netfront|mot|up\.browser|up\.link|audiovox"[NC,OR]
RewriteCond %{HTTP_USER_AGENT} "blackberry|ericsson,|panasonic|philips|sanyo|sharp|sie-|ipad|ipod|iphone"[NC,OR]
RewriteCond %{HTTP_USER_AGENT} "portalmmm|blazer|avantgo|danger|palm|series60|palmsource|pocketpc"[NC,OR]
RewriteCond %{HTTP_USER_AGENT} "smartphone|rover|ipaq|au-mic,|alcatel|ericy|vodafone\/|wap1\.|wap2\.|mobile safari|android"[NC]
RewriteRule ^(.*)$ m/$1 [R=307,NC,L,QSA]
是什么让它卡住了


此外,它还将/var/www/html//var/www/html//var/www/html//var/www/html/添加到url

打开日志看看到底发生了什么怎么样

RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
以下是RewriteLog和RewriteLogLevel目录的文档:


    • 我马上就看到两个问题

    • 不断重写到/var/www/html。。。可能是因为您未正确设置
      RewriteBase
      。听起来您需要重写base/var/www/html,假定这实际上是您站点的根目录
    • 如果我没记错的话,在每目录重写(即在.htaccess中重写)中,您的路径中从来没有前导斜杠。这是您在第一次重写第二次时遇到的问题,在第二次重写中,您正在检查在
      m/
      之前是否有一个前导斜杠,该斜杠可能永远不会出现

    • 我并不是说这将解决您所有的问题,我现在没有时间进一步研究,但这可能会让您开始。

      我不知道如何或为什么,但以下代码工作正常:

      RewriteCond %{REQUEST_URI} !^/m/.*$
      RewriteCond %{HTTP_COOKIE} !^.*mobile.*$ [NC]
      RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC,OR]
      RewriteCond %{HTTP_USER_AGENT} "sony|symbian|nokia|samsung|mobile|windows ce|epoc|opera mini|IEmobile|DoCoMo" [NC,OR]
      RewriteCond %{HTTP_USER_AGENT} "nitro|j2me|midp-|cldc-|netfront|mot|up\.browser|up\.link|audiovox"[NC,OR]
      RewriteCond %{HTTP_USER_AGENT} "blackberry|ericsson,|panasonic|philips|sanyo|sharp|sie-|ipad|ipod|iphone"[NC,OR]
      RewriteCond %{HTTP_USER_AGENT} "portalmmm|blazer|avantgo|danger|palm|series60|palmsource|pocketpc"[NC,OR]
      RewriteCond %{HTTP_USER_AGENT} "smartphone|rover|ipaq|au-mic,|alcatel|ericy|vodafone\/|wap1\.|wap2\.|mobile safari|android"[NC]
      RewriteRule ^(.*)$ /m/ [L,R=307,QSA]
      
      我最好的猜测是,
      RewriteBase
      已经在httpd.conf中定义,并且如果您使用更简单,则会导致某种类型的冲突,例如,您会问:

      #Configuration AMF Filter
      #
      PerlSetEnv AMFMobileHome /usr/local/AMF
      PerlSetEnv AMFProductionMode true
      PerlSetEnv ServerMemCached localhost:11211
      PerlTransHandler +Apache2::AMFLiteDetectionFilter
      RewriteEngine on
      RewriteCond %{**ENV:AMF_DEVICE_IS_MOBILE**} ^true*
      RewriteRule ^(.*)$ http://m.foo.org [R=301,L] 
      

      这是一个示例,它使用的AMFLIEDTectionFilter模块不需要设备存储库,但AMF支持多个设备存储库,如51Degrees.mobi、DetectRight和WURFL

      这是在每个目录(
      .htaccess
      /
      )中还是在服务器/virtualhost上下文中?@ax,它在.htaccess中(不访问httpd.conf)请张贴请求标题。另外,你的主站点是在还是在?、而不是/local directory prefix/,所以
      RewriteBase/var/www/html
      肯定是错误的(尽管我也这么想)。@JKirchartz你试过吗?RewriteBase文档可能会有点混乱,因为该示例假设已设置了Alias指令,这在我使用的场景中基本上从未出现过。