【问题标题】:How to set .htaccess so link in side html file will read from a base directory如何设置 .htaccess 以便侧 html 文件中的链接将从基本目录中读取
【发布时间】:2025-12-18 00:30:02
【问题描述】:

现在,我已将我的 html 文件放在 public/views 文件夹下, public/libs下的库,public/src下的自定义文件

我正在使用DictoryIndex 来设置默认主页。赞DirectoryIndex public/views/index.html

但是在index.html文件里面,我必须用<a href="public/views/product.html"></a>打开和index.html同目录下的文件,否则找不到文件。然后 URL 会看起来很难看,比如site.com/public/views/product.html

请问,如何设置.htaccess文件去掉URL地址中的public/views

还有一个问题,当我编写代码以在index.html 中导入库时,它似乎会从基本文件夹中读取(就像我放置.htaccess 文件的位置一样)。但是在其他的html文件中,它们会从自己的目录中读取,就像public/view中的html文件会从文件夹views开始读取一样。有没有办法解决这个问题?

谢谢

【问题讨论】:

    标签: html apache .htaccess


    【解决方案1】:

    您是否也需要通过 HTTP 访问您的库和自定义文件?如果没有,只需将您的文档根设置为public/views

    否则,您可以使用类似的方法将*.html 重写为public/views

    Options +FollowSymLinks -Multiviews
    
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule (.+\.html)$ /public/views/$1 [L]    
    

    无论如何,在DirectoryIndex 指令中使用完整路径而不是文件名并不是一个好主意,原因很明显。

    它还解决了您的第二个问题。目前,public/views/index.html 被视为/,因此与此文件相关的任何内容都相对于/,而不是views 文件夹。另一方面,任何其他文件仍被视为“自身”,因此包含相对于 views 文件夹。

    【讨论】:

    • 它不起作用,它只给了我根文件夹中的文件夹和文件列表...顺便说一句,我正在使用 wamp 和 localhost 测试代码,这可能是个问题吗?
    • 确保您在主 Apache conf 的正确 Directory 指令中有 AllowOverride All 选项。没有它,您将无法使用 .htaccess 的所有功能。我也使我的答案更加有力。在httpd.conf 中查找AllowOverride,并在正确的Directory 块中将其从None 更改为All。您可以选择添加一个新的 Directory 块,以更具体地指向您的文档根目录。
    • 您好,它可以工作,但 url 显示“/public/views”,有没有办法删除它?
    • 我在本地服务器上测试它时没有,这就是重写规则的重点,它是重写,而不是重定向。你能发布你的完整.htaccess吗?
    • 我的 .htaccess 仅包含您编写的代码,我复制并粘贴了它...但我的根文件夹中还没有 httpd.conf。我正在使用 wamp,我是在他们的 httpd.conf 文件中进行编辑,还是创建一个新文件放在项目文件夹的根目录中?如果我需要做一个新的...你介意给我一个样本或一个你认为对你有帮助的教程链接吗?谢谢:-)