Переписывание URL CI - PullRequest
       34

Переписывание URL CI

3 голосов
/ 13 мая 2011

Я никогда ранее не переписывал URL-адрес, за исключением удаления части index.php из моих установок CodeIgniter и того, что я делаю, используя скопированный фрагмент в моем файле .htaccess. У меня не было времени, чтобы на самом деле узнать, что делает сниппет; Я в основном очень плохо знаком с переписыванием URL.

У меня есть мобильная версия моего веб-приложения. Я дошел до перенаправления мобильных пользователей на поддомен: m.myhost.tld. Однако, поскольку я использую (один) CodeIgniter (установка), я должен отправить этих мобильных пользователей на мобильный контроллер, в моем случае /mobile/. Таким образом, контроллер всегда отображается в моей адресной строке.

Я просто не думаю, что это очень чисто, и я ищу способ переписать URL; но по правде говоря, я даже не уверен, возможно ли это .. отсюда мой вопрос. Я хочу избавиться от части контроллера /mobile. Это возможно?

Некоторые примеры:

Моя текущая мобильная корневая папка

http://m.myhost.tld/mobile

Я бы хотел превратить это в

http://m.myhost.tld/

В настоящий момент, когда я перехожу на http://m.myhost.tld/, он перенаправляет на контроллер по умолчанию для моего приложения CodeIgniter, которое является частью «настольной» версии веб-приложения.

Другой пример:

Поворот

http://m.myhost.tld/mobile#mobile/about

в

http://m.myhost.tld/#mobile/about

Я не уверен, что я здесь что-то понимаю. Я в своей голове, но, как я уже сказал, я не знаю, что именно возможно . Если пользователь находится на поддомене m, я хочу скрыть часть /mobile моих URL. Однако, только когда мы находимся на поддомене m, версия «для рабочего стола» (которая находится на www) вообще не затрагивается.

Как я уже говорил пару раз, я не уверен, что возможно, и то, что я ищу, может быть слишком сложным или еще чем-то. Я подумал, что спрошу, потому что учиться, спрашивая, это то, что я делаю лучше всего. Пожалуйста, не обращайте на меня слишком много внимания, если это окажется глупым вопросом, господа профессионалы;)

EDIT: Я думал, что отредактирую, потому что я не хочу ошибаться. Я не обязательно ищу точные ответы на мой вопрос. Я также приветствую документацию / учебные пособия / статьи, которые могут привести меня к решению. Если мне удастся придумать собственное решение, я, конечно, узнаю намного больше.

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 14 мая 2011

Это может быть слишком простым решением, но почему бы не в вашей конфигурации маршрутизации сделать что-то простое, например

в вашей конфигурации сделать что-то вроде

if ($_SERVER['SERVER_NAME'] == 'm.myhost.tld')
    $route['default_controller'] = "mobile";

Это сделает контроллер контроллера по умолчанию мобильным, поэтому вам не нужно иметь /mobile...100100

Как я уже сказал, может быть, слишком просто

0 голосов
/ 13 мая 2011

РЕДАКТИРОВАТЬ: не работает, но, возможно, кто-то может превратить его в то, что делает

Попробуйте это:

RewriteCond $1!^mobile/
RewriteCond %{HTTP_HOST} ^m\.myhost\.tld
RewriteRule (.*) /mobile/$1 [L]
...