我可以将index.php放在子目录中,但不能在url中显示子目录吗?

时间:2012-02-13 20:00:43

标签: php .htaccess

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

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

根据您的需要,重写规则可能过度杀戮。对于您的主索引页面,这将有效...

只需将这一行添加到.htaccess文件中:

DirectoryIndex mysubdir/index.php

只需在网址中显示mysubdir/index.php,就会显示位于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

答案 2 :(得分: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>