【问题标题】:.htaccess make folder act as root?.htaccess 使文件夹充当根?
【发布时间】:2011-04-01 04:03:42
【问题描述】:

有没有办法让 .htaccess 告诉文件夹充当最低级别?我的意思是,假设你有一个这样的文件夹:

/关于/ /接触/ /css/ /图片/ .htaccess 索引.php 头文件.php

如果他们在/contact/index.php,那么如果我有<a href="../index.php">Home</a>去主页,一切正常,但如果他们在实际的主页上,它会尝试去一个更低的目录。

原因是因为我试图在子文件夹中测试网站。

【问题讨论】:

  • 你能详细说明一下吗? “那么如果我有 Home 可以转到主页”是什么意思?

标签: php apache .htaccess mod-rewrite directory


【解决方案1】:

直接回答你的问题,答案是。在读取 .htaccess 时,路径已被转换为目录。

如果要更改root,则必须在httpd.conf中进行(或将root中的所有请求重写到目标目录)。如果您想拥有多个根(在不同的域下),则必须使用虚拟主机(同样,仅在 httpd.conf 中)。

您也可以让您的网站在不在根目录中时运行。

  • 正确使用相对路径(“/contact/index.php”中的“../index.php”和根网页中的“index.php”)。不是一个很好的选择。
  • 使用绝对路径,但在它们前面加上网站相对于服务器根目录的路径。在包含在所有脚本中的文件中为此设置一个常量的最简单的方法。

【讨论】:

    【解决方案2】:

    这有点笨拙...但是您可以创建 /home 文件夹并将 index.php 的副本放在那里。同样,这完全是 hack,但它应该可以解决您正在尝试做的事情。

    要考虑的另一件事是在 .htaccess 中使用 mod_rewrite 来查找 /home 并路由到根目录。

    【讨论】:

      【解决方案3】:

      在 /contact/index.php 上,您可以使用

      链接到主 index.php
      <a href="/index.php">Link</a> 
      

      【讨论】:

      • 问题不是很清楚,但他不能这样做的原因是因为他在子目录中测试站点,这意味着链接的目标必须是“/subdir /index.php"(与生产环境不匹配)。
      • 所以使用定义为 siteRoot = "/subdir/"; 的变量然后是您使用的任何链接或参考。
      猜你喜欢
      • 2019-03-17
      • 2016-03-09
      • 2016-10-29
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2019-10-16
      相关资源
      最近更新 更多