【发布时间】:2011-06-05 20:51:55
【问题描述】:
我正在尝试创建正确的 .htaccess 以允许我这样映射:
http://domain.com/ --> http://domain.com/home
http://domain.com/whatever --> http://domain.com/home/whatever
http://user.domain.com/ --> http://domain.com/user
http://user.domain.com/whatever --> http://domain.com/user/whatever/
在这里,有人会输入上述网址,但在内部,它会像右侧的网址一样重定向。
子域也是动态的(也就是说,http://user.domain.com 不是实际的子域,而是 .htaccess 重写)
另外 /home 是我的默认控制器,因此没有子域会在内部强制它到 /home 控制器,并且它后面的任何路径(如上面的 #2 示例所示)将是该控制器内的(catch-all)函数。
同样,如果传递子域,它将作为(catch-all)控制器以及它的任何(catch-all)函数传递(如上面的 #4 示例所示)
希望我在这里没有问太多,但我似乎无法为此找出正确的 .htaccess 或路由规则(在 Codeigniter 中)。
httpd.conf 和主机都设置好了。
编辑#1
这是我的 .htaccess 即将接近但在某些时候搞砸了:
RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^([a-z0-9-]+).domain [NC]
RewriteRule (.*) index.php/%1/$1 [QSA]
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L,QSA]
有了以上内容,当我访问:http://test.domain/abc/123 这是我在 $_SERVER var 中注意到的内容(我已经删除了一些字段):
Array
(
[REDIRECT_STATUS] => 200
[SERVER_NAME] => test.domain
[REDIRECT_URL] => /abc/123
[QUERY_STRING] =>
[REQUEST_URI] => /abc/123
[SCRIPT_NAME] => /index.php
[PATH_INFO] => /test/abc/123
[PATH_TRANSLATED] => redirect:\index.php\test\test\abc\123\abc\123
[PHP_SELF] => /index.php/test/abc/123
)
您可以看到 PATH_TRANSLATED 没有正确形成,我认为这可能是把事情搞砸了?
【问题讨论】:
标签: apache .htaccess codeigniter subdomain wildcard