将通配符子域的htaccess重写规则转换为codeigniter中的参数

时间:2018-08-27 18:54:26

标签: .htaccess codeigniter codeigniter-3

我重新配置了通配符子域*.example.com,现在我可以访问anysubdomain.example.com,而且总是可以执行相同的codeingiter安装。

当尝试请求不同的子域时,我试图加载不同的内容,但是我需要始终调用相同的方法和类,但是参数需要根据子域名进行更改。

示例:

  1. 当我点击john.example.com时,我希望能够看到与访问example.com/users/profile/john时相同的内容。

  2. 当我点击mary.example.com时,我希望能够看到与访问example.com/users/profile/mary时相同的内容。

更新:

我正在使用此代码,但正在重定向而不是显示将URL保留为子域的内容:

RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/users/profile/%1/$1 [QSA,L]

更新2:

现在我将.htaccess文件更改为

RewriteCond $1 !^(index\.php|resources|robots\.txt) [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$ [NC]
RewriteRule ^(.*)$ index.php?/users/profile/%1/$1 [L,QSA]

当我访问username.example.com或访问example.com/users/profile/username(在两种情况下)并且在var_export上使用$_GET时,它显示:

array (
  '/users/profile/username/' => '',
)

但是由于某些未知的原因,当我访问example.com/users/profile/username时,我会看到用户个人资料(右),但是当我访问username.example.com时,我会看到索引页(我原本希望看到用户个人资料也是如此)。

注意:我的问题与This question不同,因为这是关于重定向到具有子域名称的控制器(可以手动管理)因为控制器是有限的),我的问题是关于显示特定控制器和方法的内容而无需重定向(重写规则),其参数等于子域(并且参数无法手动管理,因为没有它们的值限制。

0 个答案:

没有答案