【问题标题】:directory problems when using htaccess使用 htaccess 时的目录问题
【发布时间】:2024-04-27 00:55:01
【问题描述】:

我现在已经弄清楚 Mod 重写是如何工作的,但是我遇到了一个新问题。

ht访问代码

RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)/$ http://localhost/testblog/index.php?category=$1

我现在知道了:localhost/testblog/dogs/

等于:localhost/testblog/index.php?category=dogs

但是,当我在 index.php 文件上放置一个链接时; <a href="dogs/"> Dogs </a> 那个页面 (localhost/testblog/dogs/) 现在有以 dogs/ 为前缀的样式表,所以样式表看起来像 localhost/testblog/dogs/stylesheets/style.css

但是当我与<a href="index.php?category=dogs"> Dogs </a> 链接时,一切正常; localhost/testblog/stylesheets/style.css

我觉得这很令人困惑,因为我认为它们现在使用 .htaccess 文件等同于同一件事?

我怎样才能用前缀纠正这个问题? 希望我已经正确解释 谢谢

【问题讨论】:

    标签: .htaccess url-rewriting hyperlink directory


    【解决方案1】:

    我认为您的问题可能更多是您链接样式表的方式。您正在重写/dogs/,我猜您的样式表的链接类似于<link href="stylesheets/style.css" rel="stylesheet" type="text/css">。因此,当您将浏览器指向 /dogs/ 时,它会尝试加载与 URL 相关的样式表,并且看起来 /dogs/ 是一个文件夹,因此它只是将 stylesheets/style.css 附加到您当前的 URL。我认为最好的选择是绝对链接到样式表,例如:<link href="/testblog/stylesheets/style.css" rel="stylesheet" type="text/css">

    【讨论】:

      【解决方案2】:

      就像 Jonathon 所说,浏览器通过将 href 附加到地址栏上显示的 url 来计算相对链接。 要改变这一点,你需要有一个基本标签

      <base href="//localhost/testblog">
      

      因此,您的浏览器将通过将您的 href 添加到基本 href 来计算您的链接。

      【讨论】: