Назад | Перейти на главную страницу

NGINX Drupal Redirect для мобильных устройств

Что я хочу сделать;

Я хочу, чтобы мобильные пользователи были перенаправлены на http://m.site.org/mobile-home.

Перенаправление на m.bzaeds.org не является проблемой. У меня также это нормально работает в Apache, но то же правило .htaccess, которое у меня есть в apache, похоже, не работает в NGINX. Я также пытался преобразовать это точное правило с помощью переводчика NGINX, но правило, которое он мне дал, тоже не сработало.

  RewriteCond %{HTTP_HOST} m.site.org
  RewriteCond %{REQUEST_URI} ^\/?$
  RewriteRule ^(.*)$ mobile-home [L]

Что я сделал до сих пор;

Итак, у меня NGINX перенаправляет на m.site.here/mobile-home. Теперь мы используем модуль Mobile, который определяет, является ли подключенное устройство мобильным устройством, и автоматически применяет настраиваемую мобильную тему. Он без проблем обнаруживает, является ли устройство мобильным.

Однако он не загружается, даже если перенаправление работает, и я просмотрел error_log и заметил, что он не работает, потому что / var / www / html / drupal / mobile-home не существует - что, да, верно. Я предполагаю, что это как-то связано с тем, что mobile-home фактически является узлом, потому что это то, что страницы в drupal.

Однако, как бы я ни пытался создать перенаправление (или вернуть 301), он либо был запрещен, бесконечный цикл переадресации обреченности, либо вызывал вышеупомянутую ошибку.

Любые идеи?

А вот и множество путаниц, которые я пробовал до сих пор;

    location / {
            #if ($http_user_agent ~* '(iPhone|iPod|android|blackberry)') {
    #   rewrite ^/(.*)$ /index.php?q=$1;
    #}
            #if ($http_host ~ "m.bzaeds.org"){
            #rewrite ^(.*)$ /mobile-home [L] RewriteCond $request_filename !-f;
            #}
    try_files $uri @rewrite;
    #try_files $uri /mobile-home break;
}        


    location @rewrite {
        #index index.php;
    #   if ($http_user_agent ~* ('iPhone|iPod)') {
    #     rewrite ^(.*)$/index.php http://m.bzaeds.org/mobile-home$1 break;
    #   }
        # Some modules enforce no slash (/) at the end of the URL
            # Else this rewrite block wouldn't be needed (GlobalRedirect)
    rewrite ^/(.*)$ /index.php?q=$1;
    #return 301 /mobile-home break;

(И я также попытался избавиться от location @rewrite и просто выполнил основную перезапись в location /, но у меня все еще было много тех же ошибок. Я только что выполнил этот оператор в своей немобильной версии, поэтому , ммда.)

Итак, я сделал это не так, как я в конечном итоге хотел, с перенаправлением, потому что, что бы я ни пробовал, он все равно не переставал искать в неправильном месте. Однако я обнаружил, что если вы используете модуль «Мобильные инструменты», он дает вам возможность в разделе «Первая страница» установить его как узел, в нашем случае мобильный дом, а не индекс.

Проблема устранена, проблема решена, достаточно хорошо.