重写子域以查询字符串和掩码.目前正在循环和403'ing


Rewrite Subdomain to query string and mask. Currently looping and 403'ing

好久不见了!

嗨伙计们,

所以我想实现以下目标:

www.domain.com
domain.com -> 301 -> www.domain.com
account-name.domain.com -> mask and ask server for -> domain.com/account/acount-name
account-name.domain.com/page -> mask and ask server for -> domain.com/account/account-name/page
etc..

到目前为止,我已经在我的htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain'.com$ [NC]
RewriteRule  ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^www
RewriteCond %{HTTP_HOST} ^([^'.]+)'.([^'.]+)'.([^'.]+)$
RewriteRule ^(.*)$ account/%1$1 [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

然而,我一直收到这种403消息,它看起来像一个循环!

您没有访问权限/index . php/账户/testindex.php/账户/testindex.php/账户/testindex.php/账户/testindex.php/账户/测试

也许我错过了一些明显的东西,因为我已经在这个工作了一段时间,并放弃了上次我尝试。这可能吗?

一旦我得到这个排序,我计划允许用户设置CNAMES并指向我们的domain.com,我希望能够将非domain.com请求重写为类似于上述结构的东西,如果不相同,因为我们可以使用regex测试域格式,然后从DB加载帐户。所以任何关于这方面的建议都是额外的:)

设置>

目前在Apache和Ubuntu 14服务器上使用Codeigniter。

感谢您的指导!

stefan

尝试更改

RewriteRule  ^(.*)$ http://www.domain.com/$1 [R=301]

RewriteRule  ^(.*)$ http://www.domain.com/$1 [R=301,L]

L确保此重写是此请求的最后一个处理规则。否则Apache也会应用你的其他重写规则,导致如下:

/index . php/账户/testindex.php/账户/testindex.php/账户/testindex.php/账户/testindex.php/账户/测试