0

我有以下结构:

/public_html
    /FILES AND FOLDERS I MUST NOT TOUCH IN ANY WAY (not mine)
    /mysitefolder/ (this is mine)
        /images
        /js
        /index.php
        /someotherpage.php

现在,mysitefolder内页面中的所有链接都是这样的:

<a href="/someotherpage.php">A link</a>
<img src="/images/myimage.png">
<script type="text/javascript" src="/js/somescript.js"></script>

也就是说,所有链接都是使用以“/”开头的相对 URL 构建的(即假设所有内容都在服务器的公共根目录中)。

我需要的是,欺骗(或“重写”,如果你愿意的话)这些链接从“/mysitefolder/”而不是“/”加载资源。例如,所需的解决方案会将上述链接转换为:

<a href="/mysitefolder/someotherpage.php">A link</a>
<img src="/mysitefolder/images/myimage.png">
<script type="text/javascript" src="/mysitefolder/js/somescript.js"></script>

如何使用 .htaccess 文件来完成此操作?我一直在阅读很多线程,但没有什么对我有用,老实说我不太了解.htaccess。

4

1 回答 1

0

阅读您的问题,我认为您不想使用静态 URL,而只是为了使 URL 正常工作。如您所说,当前 URL 假定系统在网站的根文件夹中启动。我不建议您使用 htaccess,因为它不适用于这种情况。您应该将 html / php 文件中的 URL 编辑为

<a href="/mysitefolder/someotherpage.php">A link</a>
<img src="/mysitefolder/images/myimage.png">
<script type="text/javascript" src="/mysitefolder/js/somescript.js"></script>

(如果你想从根链接)或

<a href="./someotherpage.php">A link</a>
<img src="./images/myimage.png">
<script type="text/javascript" src="./js/somescript.js"></script>

如果您想要一个真正的相对链接,则使用当前文件夹作为起点。

如果您的根目录中的文件未被使用,您可以使用 htaccess 文件将所有内容转发到 mysitefolder。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !mysitefolder [NC]
RewriteRule ^(.*)$ /mysitefolder/$1 [L]

(未测试)

于 2013-08-08T18:10:06.597 回答