2012-02-13 72 views
2

我有一个网站,说http://mysite.com。我想把index.php放在一个子目录中,public_html/mysubdir/index.php。当用户转到http://mysite.com时,我想要执行public_html/mysubdir/index.php。我希望该网址继续阅读http://mysite.com。这可能吗?我可以把index.php放在一个子目录下,但不能在url中显示子目录?

+1

是,搜索结果的URL重写。 – Brad 2012-02-13 20:02:13

+0

你使用的是什么http服务器? – Ivan 2012-02-13 20:03:19

+0

@Ivan:我使用Apache 2.2.22。这是你的意思吗? – moondog 2012-02-13 20:07:19

回答

2

重写规则可以是矫枉过正这取决于你想。对于你的主要索引页,这将工作...

简单地增加这一行到您的.htaccess文件:

DirectoryIndex mysubdir/index.php 

它会显示位于mysubdir/index.php而只是显示在URL http://mysite.com的页面。

我自己使用这种方法。虽然所有我的网页位于相同的子目录中,主页显示与我的域名本身(http://www.mysite.com)。所有其他页面显示完整的URL。


如果你也有更深的子目录中index网页,并希望那些被子目录中默认的就上来了。

例子:

如果你想这个网页:http://mysite.com/mysubdir/anothersub/index.php

拿出这个网址:http://mysite.com/mysubdir/anothersub/

然后修改与另一个index.php类似的行...

DirectoryIndex mysubdir/index.php index.php 

这样做会告诉服务器以相同的顺序查找具有这些名称的文件。如果找不到第一个,则会尝试第二个,依此类推。

当您位于根位于/处时,它会查找并显示mysubdir/index.php

当你像/mysubdir/anothersub/另一个子目录中,也找不到任何名为mysubdir/index.php如此这般的下一个项目,并显示index.php

+0

这工作,谢谢。但是,现在我有另一个问题。 index.php链接到各种CSS和JS文件,使用相对链接。例如:

4

如果您的网络服务器是Apache,您可以使用URL rewriting with mod_rewrite

另一种选择是在根目录下创建一个index.php,并在子目录中包含index.php。

1

您可以使用.htaccess文件并定义Rewrite规则。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

请确保mod_rewrite启用,然后将.htaccess文件在你的根目录下有这样的事情:

<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ your_subdir/index.php/$1 [L] 
</IfModule> 
+0

非常有帮助。谢谢。 – moondog 2012-02-13 20:55:04

+0

太棒了!我很高兴它有用。 – 2012-02-13 20:56:07

相关问题