使用 mod_rewrite 一级方法配置 .htaccess

Configure .htaccess with mod_rewrite one level up approach

我的项目结构是

/var/www/mysite
------页数
------脚本
------其他

在其对应的虚拟主机中配置为:

ServerName mysitename.com
DocumentRoot /var/www/mysite/pages/

因此,当从页面文件夹提供 index.php 时,资源(scripts/images 等)没有找到,正如预期的那样,因为页面正试图像这样加载它们。 http://mysitename.com/scripts/storage.js.

这当然有道理。

您将如何解决这个问题?我知道通过设置一些 mod_rewrite 规则,您可以有条件地重写 url,这是一种解决方法吗? 我主要想看看我在这里有什么选择,而不是得到一个解决方案,比如将你的 .html 文件向上移动一层。

有 2 种可能的解决方案:

  1. 在您的 Apache 服务器配置中使用 alias(当然您需要控制 Apache 配置)。 alias命令示例:

    Alias /scripts /var/www/mysite/scripts
    <Directory /var/www/mysite/scripts>
       Options Indexes
       Allow from all
    </Directory>
    
  2. pages/ 目录中创建符号 link。例如在 *nix 系统上使用此命令创建 symlinks:

    cd pages
    ln -s ../scripts .
    ln -s ../other .