2016-02-25 6 views
0

У меня есть приложение grails, над которым я работаю в своей текущей работе. Я должен работать над мобильной версией веб-сайта, и я хочу поймать в UrlMappings.groovy вопрос, поступает ли запрос с сайта www.mysite.com или m.mysite.com. Любая идея, как я могу это сделать?Как перенаправить на мобильную страницу на основе m.mysite.com в приложении grails

UPDATE:.

Мои текущие отображения выглядеть следующим образом --->

импорт статических org.apache.commons.lang.StringUtils *

class UrlMappings { 
    static mappings = { 
     "/$controller/$action?/$id?"{ 
      constraints { 
       // apply constraints here 
      } 
     } 

     "/$lang/$controller/$action?/$id?"{ 
      language = "${lang}" 
      constraints { 
       // apply constraints here 
      } 
     } 

     // Start :: Shopping Tools internal URLs 
     "/modelLine/build/$year/$modelLineCode/"(controller:'modelLine', action:'build') 
     "/colors/index"(controller:'colors', action: 'index') 
     "/packages/index"(controller:'packages', action: 'index') 
     "/accessories/index"(controller:'accessories', action: 'index') 
     "/summary/index"(controller:'summary', action: 'index') 

     // Start :: Spanish :: Shopping Tools internal URLs 

     "/$lang/modelLine/build/$year/$modelLineCode/"(controller:'modelLine', action:'build') 
     "/$lang/colors/index"(controller:'colors', action: 'index') 
     "/$lang/packages/index"(controller:'packages', action: 'index') 
     "/$lang/accessories/index"(controller:'accessories', action: 'index') 
     "/$lang/summary/index"(controller:'summary', action: 'index') 

     // End :: Spanish :: Shopping Tools internal URLs 
     // End :: Shopping Tools internal URLs 


     // Default Home Page 
     "/$lang?"(controller:"modelLine", action:"index"){ 
      constraints { 
       lang inList:['en','fr'] // avoids invalid matching 
      } 
     } 

     "/admin"(controller:"admin", action:"index") 
     // Error page definitions 
     "404"(controller:"errors", action:"notFound") 
     "500"(controller:"errors", action:"serverError") 
     "403"(view:'/login/denied') 
     "402"(view:'/login/denied') 
     "401"(view:'/login/denied') 
    } 
} 

Как изменить их для обнаружения запроса m.mysite.com?

ответ

1

Если у вас разные контроллеры для мобильного сайта, почему бы вам не изменить все ссылки в вашем m.mysite.com для указанного мобильного сопоставления? Для exampleController и действия somethingMobile в мобильном телефоне:

m.mysite.com/mobile/example/somethingMobile 

то же самое для рабочего стола, но с действием something:

mysite.com/example/something 
+0

Хорошо, я отредактировал мой вопрос. Можете ли вы показать мне, как это сделать сейчас? – BrownTownCoder

1

Это в объекте запроса, во всех действиях контроллера как request.

Проверить доступные свойства здесь https://grails.github.io/grails-doc/3.0.x/ref/Servlet%20API/request.html

+0

Я могу это сделать, но akamai отправляет запрос на m.mysite.com вместо www.mysite.com, и в этом случае мне нужно изменить сопоставления, которые я не знаю, как это сделать. – BrownTownCoder

1

Вы можете создать фильтр или перехватчик в Grails 3 и проверить request.getHeader («User-Agent»), если она подвижна, то перенаправить URL, где вы хотите.

+0

Исправьте меня, если я ошибаюсь, но я думал, что фильтры работают после UrlMapping. В этом случае, если у меня есть url как m.mysite.com, он никогда не пройдет мимо Mappings и никогда не получит фильтры – BrownTownCoder

0

Я решил это, изменив URL-адрес на уровне apache. Изменил его на www.mysite.com/m

 Смежные вопросы

  • Нет связанных вопросов^_^