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


can I put index.php in a subdirectory, but not display subdirectory in url?

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

如果您的Web服务器是Apache,则可以使用mod_rewrite重写URL。

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

重写规则可能会过度使用,这取决于您想要什么。仅对于您的主索引页,这将起作用。。。

只需将这一行添加到.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

想出这个URL:http://mysite.com/mysubdir/anothersub/

然后用另一个index.php这样修改行。。。

DirectoryIndex mysubdir/index.php index.php

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

当您在/的根目录中时,它会找到并显示mysubdir/index.php

当您在另一个子目录(如/mysubdir/anothersub/)中时,它找不到任何名为mysubdir/index.php的内容,因此它转到下一个项目并显示index.php

您可以使用.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>
相关文章: