【问题标题】:htaccess RewriteRule redirecting to parent directory?htaccess RewriteRule 重定向到父目录?
【发布时间】:2012-01-09 10:29:45
【问题描述】:

在这种情况下,我无法理解如何重定向到父目录: 我有一个带有 .htaccess 文件的根目录,其中 rewriteEngine 处于打开状态。在这个目录中,我有一个文件 rootFile.php。 另外,在这个目录中,我有一个目录“forum”,里面还有另一个 .htaccess 文件。

当有对“forum.mySite.com/rootFile.php”的请求时,我需要将其重定向到“mySite.com/rootFile.php”,这意味着我需要将请求重定向到父目录。

/forum/.htaccess:

RewriteEngine on

RewriteBase /forum/

RewriteRule ^sitemap                    /forum/map.php                [L]
...

我尝试过:

RewriteEngine on

RewriteBase /forum/

RewriteRule ^rootFileName                   ../rootFile.php            [L]
\# or so RewriteRule ^rootFileName           /rootFile.php              [L]
\# or so RewriteRule ^rootFileName           rootFile.php               [L]

RewriteRule ^sitemap                    /forum/map.php             [L]

也试过这个:

RewriteEngine on

RewriteBase /

RewriteRule ^rootFileName                   ../rootFile.php            [L]
\# or so RewriteRule ^rootFileName           /rootFile.php             [L]
\# or so RewriteRule ^rootFileName           rootFile.php              [L]

RewriteBase /forum/

RewriteRule ^sitemap                    /forum/map.php             [L]

它总是从 /forum/rootFileName 重定向到 /forum/rootFile,但从不重定向到 /rootFile。

我的错误在哪里?

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    您不能重写到文档根目录之外。这是一个安全的事情。

    你可以创建一个只包含<?php include('../rootfile.php'); ?>的rootFile.php

    【讨论】:

      【解决方案2】:

      出于安全原因,您不能重写到文档根目录之外的路径。事实上,这应该避免,因为这不是一个好习惯。

      无论如何,为了回答您的问题,一种解决方法可能是在您的文档根目录中创建一个指向目标/父目录的符号链接,但您应该保护它不被直接访问。

      让我举个例子。假设我们的文档根是/var/www/project1,并且你想在/var/www/project2/target.php上重写

      然后,您必须在 /var/www/project1 内创建一个指向 /var/www/project2 的符号链接(例如)p2

      这应该是您的/var/www/project1/.htaccess 文件:

      <IfModule mod_rewrite.c>
          RewriteEngine On
      
          RewriteCond %{REQUEST_URI} /hello/world
          RewriteRule ^(.*)$ p2/target.php [QSA,L] # p2 is the symlink name!
      </IfModule>
      

      【讨论】:

        【解决方案3】:

        你写道:

        当有“forum.mySite.com/rootFile.php”请求时,我需要 将其重定向到“mySite.com/rootFile.php”,这意味着我需要 将请求重定向到父目录。

        你的意思是:

        当有"mySite.com/forum/rootFile.php"的请求时,我需要 将其重定向到 "mySite.com/rootFile.php" 这意味着我需要 将请求重定向到父目录。

        ...这又意味着:

        当有"/forum/rootFile.php"的请求时,我需要 将其重定向到 "/rootFile.php" 这意味着我需要 将请求重定向到父目录。

        /forum 目录中的 .htaccess 中尝试以下操作:

        RewriteEngine On
        RewriteRule ^rootFileName(.*) /rootFile.php  [QSA,R=301,L]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-23
          • 2014-07-03
          • 2019-04-25
          • 1970-01-01
          • 2013-01-18
          • 1970-01-01
          • 1970-01-01
          • 2017-06-07
          相关资源
          最近更新 更多