Php 显示目录内容的子域

Php 显示目录内容的子域,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我正在开发一个有访问规则的网站。这是url结构: example.com example.com/index.php/login example.com/index.php/foo demos.example.com 对于上面的最后一个url(demos.example),我想显示example.com/index.php/demos的内容,因此,我创建了一个.htaccess文件,如下所示: RewriteEngine On RewriteBase / RewriteCond %{HTTP

我正在开发一个有访问规则的网站。这是url结构:

example.com
example.com/index.php/login
example.com/index.php/foo
demos.example.com
对于上面的最后一个url(demos.example),我想显示
example.com/index.php/demos
的内容,因此,我创建了一个.htaccess文件,如下所示:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?demos.example.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/demos [L]
RewriteCond %{HTTP_HOST} ^(www\.)?demos\.example\.com 
RewriteRule ^(.*)$ index.php/demos/$1 [L]
当我浏览
demos.example.com
时,会显示索引页(example.com),因为没有发生任何事情。我希望我的解释清楚

  • 我已经读过了,但是这个解决方案做了一个“浏览器重定向”,这不是我的想法
  • 使用不会产生任何结果:显示索引而不是index.php/demos
更新 如果我按如下方式使用.htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?demos.example.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/demos [L]
RewriteCond %{HTTP_HOST} ^(www\.)?demos\.example\.com 
RewriteRule ^(.*)$ index.php/demos/$1 [L]
…这会使浏览器显示
500内部服务器错误
。查看日志时,它会打印以下消息:

[Thu Dec 06 15:06:24 2012] [error] [client 201.192.30.254] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://example.com/
[Thu Dec 06 15:06:24 2012] [debug] core.c(3112): [client 201.192.30.254] r->uri = /index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/, referer: http://example.com/
[Thu Dec 06 15:06:24 2012] [debug] core.c(3118): [client 201.192.30.254] redirected from r->uri = /index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/, referer: http://example.com/
[Thu Dec 06 15:06:24 2012] [debug] core.c(3118): [client 201.192.30.254] redirected from r->uri = /index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/, referer: http://example.com/
[Thu Dec 06 15:06:24 2012] [debug] core.c(3118): [client 201.192.30.254] redirected from r->uri = /index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/, referer: http://example.com/
[Thu Dec 06 15:06:24 2012] [debug] core.c(3118): [client 201.192.30.254] redirected from r->uri = /index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/, referer: http://example.com/
[Thu Dec 06 15:06:24 2012] [debug] core.c(3118): [client 201.192.30.254] redirected from r->uri = /index.php/demos/index.php/demos/index.php/demos/index.php/demos/index.php/demos/, referer: http://example.com/
[Thu Dec 06 15:06:24 2012] [debug] core.c(3118): [client 201.192.30.254] redirected from r->uri = /index.php/demos/index.php/demos/index.php/demos/index.php/demos/, referer: http://example.com/
[Thu Dec 06 15:06:24 2012] [debug] core.c(3118): [client 201.192.30.254] redirected from r->uri = /index.php/demos/index.php/demos/index.php/demos/, referer: http://example.com/
[Thu Dec 06 15:06:24 2012] [debug] core.c(3118): [client 201.192.30.254] redirected from r->uri = /index.php/demos/index.php/demos/, referer: http://example.com/
[Thu Dec 06 15:06:24 2012] [debug] core.c(3118): [client 201.192.30.254] redirected from r->uri = /index.php/demos/, referer: http://example.com/
[Thu Dec 06 15:06:24 2012] [debug] core.c(3118): [client 201.192.30.254] redirected from r->uri = /, referer: http://example.com/ 
试试这个:

RewriteCond %{HTTP_HOST} ^(www\.)?demos\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/index.php/demos/$1 [L]

这使得浏览器重定向为“点”,正如我在postAh中所述,所以你希望它保持URL不变,但显示来自另一个域的内容?我认为这实际上是不可能的。。它是?我的意思是,我确信你应该能够通过在你的DNS记录中设置一个虚拟服务器来做到这一点。但是使用.htaccess。。我怀疑。我认为这是可能的。它不是来自另一个域,只是来自同一个域的另一个“段”。对,一个子域。好的,我很想自己看看解决方案。好吧,不可能显示来自另一个域的内容,但可能来自同一个域(使用文件名而不是完整的url)。然而,为了让它工作起来,我做了一些修改,但在应用程序方面,与.htaccess无关