【问题标题】:help with php urls帮助 php url
【发布时间】:2010-09-28 03:24:05
【问题描述】:

我有一个 PHP 网站,它有两个目录:一个应用程序目录和一个公共目录。

问题是用户必须访问 www.domain.com/public 才能访问该站点,但我需要将请求 www.domain.com/ 的用户重定向到 www.domain.com/public

所以我的问题是最好的方法是什么?

【问题讨论】:

    标签: php url-rewriting url-routing


    【解决方案1】:

    我会使用 .htaccess 重写规则来做到这一点。这确保了用户总是被重定向,即使 index.php 没有被请求。像这样的东西应该适合你:

    RewriteCond %{REQUEST_URI} !public/
    RewriteRule ^(.*)$ public/$1 [L] 
    

    【讨论】:

    • 我们不知道他在哪个网络服务器上。
    • @user257493 : Apache 2.2.14 和 PHP 5.3.1
    • @user257493 我以为是apache,因为他只提到了PHP,没有别的。
    【解决方案2】:

    多种方式 - .htaccess,或者一个简单的

    <?php header('Location:http://www.domain.com/public'); ?>

    如果您不需要直接从 domain.com 显式访问任何内容,就可以解决问题

    【讨论】:

      【解决方案3】:

      您应该通过您的网络服务器(IIS/Apache/otherwise)来处理这个问题,因为它更适合和适合这类任务。 SO 对各种网络服务器的 URI 重定向有很多答案。

      ...此外,如果您不让人们进入您的“应用程序目录”(您似乎指出这是您的网络根目录),那么您应该重新设计,如果您的意图是让人们远离那个文件夹:这是一个安全风险。

      【讨论】:

        【解决方案4】:

        您也可以在 .htaccess 文件中解决它。 只需创建一个“重定向”规则:

        Redirect 301 / /public/
        

        【讨论】:

          【解决方案5】:

          您可以使用 PHP 进行重定向。在主文档根目录中的 index.php 中:

          <?php
          
          header('Location: public');
          die();
          
          ?>
          

          【讨论】:

          • 是的,到头来,死亡自然而然。
          • 有效点。这只是一个习惯过程,因为如果条件header() 下方有更多代码,最好调用die()。当然,在这种情况下,这绝对没有意义。
          【解决方案6】:

          将 index.php 放入 / 包含:

          <?php
          header('Location:http://domain.com/public');
          ?>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-03-05
            • 2015-10-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多