2015-04-23 3 views
0

У меня есть интернет-магазин, и поскольку Google решил продвигать мобильные версии веб-страниц, я разрабатываю свой m.example.com.Корневой файл для мобильной версии (.htaccess?)

Вот трюк. Я не хочу, m. домен. Я хочу, когда пользователь придет, я проверю пользовательский агент, и если он поступит с мобильного телефона, я покажу мобильную версию, если она появится с рабочего стола, покажет версию для настольных компьютеров.

Но, я хочу использовать точно такие же URL-адреса для пользователей. Таким образом, http://example.com/contact/ будет URL-адресом для пользователей настольных компьютеров и обоих мобильных пользователей.

Мобильная версия страницы находится в подкаталоге ./mobile/.

Возможно ли как-то заставить apache, чтобы изменить корень документа, если кто-то придет с мобильного, но сохраните исходные URL-адреса?

Например:

http://example.com/contact/ должны работать /var/apache/example.com/mobile/contact.php, но для настольной версии, должны работать /var/apache/example.com/contact.php? Как я уже упоминал, URL-адреса те же.

Если вопрос непонятен, оставьте комментарий.

+1

** Примечание: ** В зависимости от дизайна приложения, это может быть сделано когда вы загружаете представление (в проекте MVC), а не имеете 2 проекта (1 для рабочего стола, 1 для мобильных устройств) –

+0

Да, это проект MVC. Но мобильная версия - это новая разработка в MVC, а настольная версия - это устаревший код. – vaso123

+0

Другое примечание: это может быть проще достичь с помощью самого PHP-приложения или, альтернативно, настроить текущий CSS, чтобы быть отзывчивым. –

ответ

0

Что-то вроде этого? (С подборкой из this answer, а затем просто делать RewriteRule)

RewriteEngine On 

# Check if this is the noredirect query string 
RewriteCond %{QUERY_STRING} (^|&)noredirect=true(&|$) 
# Set a cookie, and skip the next rule 
RewriteRule^- [CO=mredir:0:%{HTTP_HOST},S] 

# Check if this looks like a mobile device 
# (You could add another [OR] to the second one and add in what you 
# had to check, but I believe most mobile devices should send at 
# least one of these headers) 
RewriteCond %{HTTP:x-wap-profile} !^$ [OR] 
RewriteCond %{HTTP:Profile}  !^$ 
# Check if we're not already on the mobile site 
RewriteCond %{HTTP_HOST}   !^m\. 
# Check to make sure we haven't set the cookie before 
RewriteCond %{HTTP:Cookie}  !\smredir=0(;|$) 
# Now redirect to the mobile site 
RewriteRule ^(.*)$ mobile/$1 [R,L] 

Кредит должен пойти к первоначальному ответу - Mobile Redirect using htaccess

+0

Я не хочу перенаправлять пользователя, 'm.' Мне не нужна версия сайта' m.'. Я хочу, чтобы apache служил в каталоге 'www' из'/etc/apache/example.com/mobile'. – vaso123

+0

Вот что означает «RewriteRule» внизу (перенаправляет запросы в каталог «mobile /'). «Проверка, если мы еще не находимся на мобильном сайте», была просто связана с ответом. –

+0

Возможно, я не объясняю четко. Позвольте пояснить. Я не хочу 'RewriteRule'. Я не хочу перенаправлять. Я хочу сказать Apache, чтобы получить файлы из каталога/mobile /, но не хочу перенаправлять. Нет сайта 'm.'. Проверьте это: http://bookline.hu – vaso123

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