【问题标题】:How to make a web app appear at the root of the site?如何使 Web 应用程序出现在网站的根目录?
【发布时间】:2015-05-12 00:39:57
【问题描述】:

我有一个公告板(基于 punBB),几年来我的根目录都用完了。我愚蠢地决定做一些园艺工作,并在此过程中将 punbb 代码移动到它自己的子目录中。代码效果很好;只要您将浏览器指向新的子目录。问题是用户希望在根目录下看到它...

我在根目录中尝试了一个索引文件,它具有以下内容:

<?php chdir('punbb');
include('index.php');

但这似乎没有奏效。所以,我尝试在 .htaccess 中使用 mod_rewrite 的“该死的酷巫术”,但我似乎无法找出正确的规则组合以使其发挥作用。

这是我想要实现的:

用户输入:

 http://guardthe.net

浏览器显示:

 http://guardthe.net/punbb/ 

 http://punbb.guardthe.net/

这可能吗,还是我应该将代码库移回根目录?

【问题讨论】:

    标签: .htaccess mod-rewrite punbb


    【解决方案1】:

    .htacces 中的类似内容应该这样做:

        RewriteEngine On
        RewriteRule ^/?$ /punbb/ [R=301,L]
    

    301 返回码将移动标记为永久,使浏览器可以更新书签。

    【讨论】:

      【解决方案2】:

      一个带有 301 HTTP 永久重定向的 PHP 文件。

      将以下内容放入guardthe.net根目录下的index.php中

      <?php
      Header( "HTTP/1.1 301 Moved Permanently" );
      Header( "Location: http://guardthe.net/punbb/" );
      ?>
      

      浏览器将重定向搜索引擎友好性。

      【讨论】:

      • 除非您的服务器上没有 mod_rewrite 支持,否则您应该避免这种方法,因为用户必须下载此网页并让浏览器显示它,然后才能执行第二个事务返回服务器。延迟通常足够长以使用户注意到。如果可能,请使用 mod_rewrite。
      【解决方案3】:

      您的示例代码丢失了,但这是使用 mod_rewrite 的一种方法:

      RewriteEngine on
      RewriteRule ^$ http://guardthe.net/punbb/ [L,R=301]
      

      【讨论】:

      • 请注意:这需要在 webroot 的 .htaccess 文件中,(不在 punbb 目录中)。
      【解决方案4】:

      您可以编写一个小的重定向脚本来简单快速地处理这个问题。

      <?php 
      header( 'Location: http://guardthe.net/punbb/' ); 
      ?>
      

      将其作为根目录下 index.php 中的唯一内容输入,然后发送到该文件夹​​的任何请求都会将用户重定向到论坛。

      【讨论】:

        猜你喜欢
        • 2010-09-09
        • 2012-03-21
        • 2021-08-10
        • 2015-04-08
        • 2015-10-27
        • 1970-01-01
        • 2010-09-25
        • 1970-01-01
        • 2017-08-22
        相关资源
        最近更新 更多