开发者

Rewriting a CI url

开发者 https://www.devze.com 2023-03-05 14:00 出处:网络
I have never before rewritten a URL except for removing the index.php part of my CodeIgniter installs, and that I do by using a copy-pasted snippet in my .htaccess file. I haven\'t had the time to act

I have never before rewritten a URL except for removing the index.php part of my CodeIgniter installs, and that I do by using a copy-pasted snippet in my .htaccess file. I haven't had the time to actually learn about what the snippet does; I'm basically very new to rewriting URLs.

I have a mobile version of my web application. I got as far as redirecting mobile users to a subdomain: m.myhost.tld. However, since I'm using (one) CodeIgniter (install), I have to send these mobile users to a mobile-specific controller, in my case /mobile/. So, the controller always shows up in my address bar.

I just don't think this is very clean, and I'm looking for a way to rewrite the URL; but truth be told, I'm not even sure if this is possible.. hence my question. I want to get rid of the /mobile controller part. Is this possible?

Some examples:

My current mobile 'root' folder is

http://m.myhost.tld/mobile

I would like to turn this one into

http://m.myhost.tld/

At the moment, when I go to http://m.myhost.tld/, it redirects to the default controller for my CodeIgniter application, which is part of the 'desktop' version of the web app.

Another example:

Turning

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

into

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

I'm not sure if I'm making any sense here. I am in my head, but like I said, I don't know what exactly is possible. If the user is on the m subdomain, I want to hide the /mobile part of my URLs. However, only when we're on the m subdomain, so the 'desktop' version (which sits at www ) does not get touched at all.

Like I said a couple of times now, I'm not sure what is possible and what I'm looking for might just be too complex or whatnot. I figured I would ask though, since learning by asking is what I do best. Please don't be too hard on me if this turns out to be a dumb question, sirs professionals ;)

EDIT: I thought I开发者_Python百科'd edit because I don't want to come off wrong. I'm not necessarily looking for exact answers to my question. I also welcome documentation/tutorials/articles that might guide me to a solution. If I can manage to come up with a solution of my own, I will of course learn a lot more.

Thanks a lot.


This could be too simple of a solution but why not in your routing config do something simple like

in your config do something like

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

This would make the default controller mobil so you wouldn't have to have /mobile...

As i said maybe too simple


EDIT: Doesn't work, but maybe someone can turn it into something that does

Try this:

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号