.htaccess问题,虚拟子域名&笨

时间:2010-08-17 10:54:21

标签: apache .htaccess codeigniter httpd.conf

基本上我的问题是这个。我已经设置了一个接受通配符子域的系统,并将它们重写为单个CodeIgniter安装。有一个名为dispatcher的控制器,它接受它所需的参数,并传递URL中使用的子域。

我的问题是:我需要创建符合CodeIgniter的URL结构的RewriteRules。目前我有这个:

RewriteEngine On

# Extract the subdomain part of domain.com
RewriteCond %{HTTP_HOST} ^([^\.]+)\.ev-apps\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

# Check that the subdomain part is not www and ftp and mail
RewriteCond %1 !^(www|ftp|mail)$ [NC]

# Redirect all requests to a php script passing as argument the subdomain
RewriteRule ^/(.*)/(.*)$ /dispatcher/run_app/$1/$2/%1 [L,QSA] # First is app name, then site, then action
RewriteRule ^/(.*)/(.*)/(.*)$ /dispatcher/run_app/$1/$2/$3/%1 [L,QSA] # First is app name, then site, then action, then any passed data.

适用于遵循此格式“http://example.ev-apps.com/app/method/1”但不适用于“http://example.ev-apps.com/app/method”的网址。似乎优先级都是错误的,但理想情况下我想要一个适用于任意数量段的解决方案,例如:“http://example.ev-apps.com/app/method/1/2/3/4/5/6/7/8/9等。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我使用以下指令解决了这个问题:

RewriteRule ^(.*)$ /dispatcher/run_app/%1/$1 [L,QSA] 

然后在我的调度程序操作中使用以下代码:

$args = func_get_args();

$site_subdomain = $args[0];
$app_name = $args[1];
$action = $args[2];
$input = (isset($args[3]) ? $args[3] : '');

感谢您阅读,如果您这样做了!