.htaccess - 重写站点结构中的所有URL

时间:2013-08-08 17:37:32

标签: .htaccess url mod-rewrite

我有以下结构:

/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。

1 个答案:

答案 0 :(得分: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]

(未经测试)