【发布时间】:2010-09-28 03:24:05
【问题描述】:
我有一个 PHP 网站,它有两个目录:一个应用程序目录和一个公共目录。
问题是用户必须访问 www.domain.com/public 才能访问该站点,但我需要将请求 www.domain.com/ 的用户重定向到 www.domain.com/public
所以我的问题是最好的方法是什么?
【问题讨论】:
标签: php url-rewriting url-routing
我有一个 PHP 网站,它有两个目录:一个应用程序目录和一个公共目录。
问题是用户必须访问 www.domain.com/public 才能访问该站点,但我需要将请求 www.domain.com/ 的用户重定向到 www.domain.com/public
所以我的问题是最好的方法是什么?
【问题讨论】:
标签: php url-rewriting url-routing
我会使用 .htaccess 重写规则来做到这一点。这确保了用户总是被重定向,即使 index.php 没有被请求。像这样的东西应该适合你:
RewriteCond %{REQUEST_URI} !public/
RewriteRule ^(.*)$ public/$1 [L]
【讨论】:
多种方式 - .htaccess,或者一个简单的
<?php header('Location:http://www.domain.com/public'); ?>
如果您不需要直接从 domain.com 显式访问任何内容,就可以解决问题
【讨论】:
您应该通过您的网络服务器(IIS/Apache/otherwise)来处理这个问题,因为它更适合和适合这类任务。 SO 对各种网络服务器的 URI 重定向有很多答案。
...此外,如果您不让人们进入您的“应用程序目录”(您似乎指出这是您的网络根目录),那么您应该重新设计,如果您的意图是让人们远离那个文件夹:这是一个安全风险。
【讨论】:
您也可以在 .htaccess 文件中解决它。 只需创建一个“重定向”规则:
Redirect 301 / /public/
【讨论】:
您可以使用 PHP 进行重定向。在主文档根目录中的 index.php 中:
<?php
header('Location: public');
die();
?>
【讨论】:
header() 下方有更多代码,最好调用die()。当然,在这种情况下,这绝对没有意义。
将 index.php 放入 / 包含:
<?php
header('Location:http://domain.com/public');
?>
【讨论】: