Mobile Redirect = Mod_Rewrite бесконечный цикл, что не так? - PullRequest
0 голосов
/ 16 марта 2011

Привет всем, я пытаюсь перенаправить на мобильный сайт, который живет в моем подкаталоге m, что еще хуже, я пытался сделать только перенаправление на странице индекса, и только в том случае, если cookie (mobile) не установлено (чтобы я мог отправлять пользователей обратно на сайт рабочего стола). В любом случае, мой перезапись мод застревает в бесконечном цикле, вот код из .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

Ответы [ 4 ]

1 голос
/ 07 февраля 2012

использует, если вы используете 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

1 голос
/ 22 марта 2011

Я сразу вижу две проблемы.

  1. Постоянная перезапись в / var / www / html ..., вероятно, происходит из-за неправильной установки RewriteBase.Звучит так, как будто вам нужно RewriteBase /var/www/html, предполагая, что на самом деле это корневой каталог вашего сайта.
  2. Если я правильно помню, в каждом каталоге перезаписывается (то есть переписывается в .htaccess), выкогда-либо иметь косую черту на вашем пути.Это проблема вашего первого RewriteCond, в котором вы проверяете наличие переднего слеша до m/, которого, вероятно, никогда не будет.

Я не говорю, что это исправит всеваши проблемы, и у меня нет времени смотреть дальше, но, возможно, это поможет вам начать.

0 голосов
/ 22 марта 2011

Я не уверен, как и почему, но следующий код работает правильно:

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 и вызывает какой-то конфликт

0 голосов
/ 21 марта 2011

Как насчет включения журнала и посмотреть, что на самом деле происходит?

RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3

Вот документация для директив RewriteLog и RewriteLogLevel:

...