嘿所有,我正在尝试重定向到位于我的子目录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 /添加到网址
答案 0 :(得分:1)
我立即看到了两个问题。
RewriteBase
。听起来你需要RewriteBase /var/www/html
,假设它实际上是你网站的根目录。RewriteCond
上的问题,您要在m/
之前检查一个前导斜杠,这可能永远不会出现在那里。我不是说这会解决你所有的问题,我现在没有时间进一步研究,但也许这会让你开始。
答案 1 :(得分:1)
用途如果你使用Apache Mobile Filter更容易,例如你想问:
#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]
这个示例使用的AMFLiteDectionFilter模块不需要设备存储库,但AMF支持多个设备存储库,如51Degrees.mobi,DetectRight和WURFL
答案 2 :(得分:0)
如何打开日志,看看到底发生了什么?
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
这是RewriteLog和RewriteLogLevel方言的文档:
答案 3 :(得分:0)
我不确定如何或为什么,但以下代码正常运行:
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中定义并导致某种冲突