2013-04-29 4 views
0

у меня есть довольно простое правило перезаписи для перенаправления мобильных агентов на наш мобильный домен от нашего Друпало 6 мультисайтовmod_rewrite правила для Друпал работ, за исключением Главного/корневого домена

RewriteCond %{HTTP_HOST} ^domain\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ 
RewriteCond %{HTTP_ACCEPT} text/vnd.wap.wml [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} !(ipad|joojoo|tablet|hiton) [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
# Param in URL to skip going to mobile site 
RewriteCond %{QUERY_STRING} !mobile=1 [NC] 
RewriteCond %{HTTP_USER_AGENT} \bagent1|agent2|agent3etc..\b [NC] 
RewriteRule (.*) "http\:\/\/m\.domain\.com/" [R=301,L] 

Все с вышеизложенным работает прекрасно КРОМЕ дома странице, когда я перейду на www.domain.com или domain.com или даже на www.domain.com/, я не перенаправляюсь. Любая другая страница на сайте работает нормально. Я попытался использовать rewritebase/с теми же результатами. Какие-либо предложения?

ТИА

+0

Я понятия не имею, почему, но проблема была в каталогах. Я удалил RewriteCond% {REQUEST_FILENAME}! -d, и он работает, с ним это не так. Странно, потому что правила drupal по умолчанию следуют, и у него есть это условие. – Analog

+0

Но это то, что я говорю в своем ответе за 7 часов до этого. Не понимаю. –

ответ

0

Лучший способ для достижения этой цели является использование мобильных инструментов модуля. Он работает для всех!

1

Все с вышеизложенным работает большой КРОМЕ домашней страницы, когда я Гото www.domain.com или domain.com или даже www.domain.com/

Я думаю, вам нужно еще одно правило без условий REQUEST_FILENAME и с одним дополнительным условием для подтверждения путь URI пуст.

Поскольку условия действительны только для следующего правила, их необходимо повторить для этого дополнительного правила. Вы можете попробовать вставить этот блок кода выше в вашем вопросе:

# Conditions in the question 
RewriteCond %{HTTP_HOST} ^domain\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ 
RewriteCond %{HTTP_ACCEPT} text/vnd.wap.wml [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} !(ipad|joojoo|tablet|hiton) [NC] 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteCond %{QUERY_STRING} !mobile=1 [NC] 
RewriteCond %{HTTP_USER_AGENT} \bagent1|agent2|agent3etc..\b [NC] 

# New condition and rule 
RewriteCond %{REQUEST_URI} ^/$  [NC] 
RewriteRule^ http://m.domain.com/ [R=301,L] 

ПРИМЕЧАНИЯ: Ваше текущее правило может быть улучшено, так как замена URL является простой текстовой строкой. Например:

RewriteRule ^(.*) http://m.domain.com/ [R=301,L] 
+0

Спасибо Faa, я в конечном итоге пошел по этому маршруту, и когда он все еще не работал, я просто продублировал правило, установленное после, и начал удалять вещи один за другим, пока не оказался в состоянии каталога (см. Выше). – Analog

+0

Это именно то, что я указываю в моем ответе: «** ... без условий REQUEST_FILENAME ... **». Условие '! -d' исключает корневую директорию из правила. С другой стороны, вы не можете просто удалить это условие из текущего кода, у вас будут проблемы с запросами к существующим каталогам. Они не будут исключены из правила, и что-то сломается на вашем сайте. Способ сделать это, как указано в моем ответе: ** Добавить ** блок кода в тот, который указан в вашем вопросе. По блоку кода я имею в виду весь набор правил в моем ответе (11 строк или около того). –