0

实际上我正在尝试制作一个类似 PHP MVC 的应用程序。一个基本的。我目前达到的里程碑已经包括:

  • 基本 RESTful 路由

意味着,如果我输入:

  • www.example.com/items/book/8888

..它正确地保持原样,我已经可以通过斜杠切出URL/并从顶部单个index.php文件加载负责的控制器..等。我的意思是,所以后端 PHP 没问题。

但唯一的问题是,它仍然无法正确处理REWRITES。例如,CSS 和 JS 就像VIEW PAGE SOURCE页面www.example.com/items/book/8888的 i 一样被破坏,资产文件被称为:

  • www.example.com/items/book/8888/css/main.css
  • www.example.com/items/book/8888/js/jquery.js

..这确实是问题,因为在代码中就像:

  • <link type="text/css" rel="stylesheet" media="all" href="css/main.css">
  • <script type="text/javascript" src="js/jquery.js"></script>

所以问题是:

  • 我如何使用 Apache REWRITE (或任何方法)来确保从 DOCROOT 正确调用每个资产文件。

例如,如果我在 URL 中:

  • www.example.com/items/book/8888

我的资产文件仍应称为:

  • www.example.com/css/main.css
  • www.example.com/js/jquery.js

还是我需要遵循其他方法?请帮助建议。谢谢你。

4

1 回答 1

1

在类似的情况下,除了对资源文件 .css, js, .jpg, ... 使用绝对路径外,我们还没有找到其他方法,即我们从根斜杠/开始使用绝对 Web 路径指定这些子文件

CSS:

<link type="text/css" rel="stylesheet" media="all" href="/My-Virtual-Root-Path/css/main.css">

js:

<script type="text/javascript" src="/My-Virtual-Root-Path/js/jquery.js"></script>

.png:

<img src="/My-Virtual-Root-Path/images/logo.png" />

您现在可以自由地对主要文件PHP、HTML、JSP 进行重写……在这种情况下,您应该重新编写脚本代码来解决这个问题。

使用这个你不应该重写资源文件,也就是说,你只重写主文件通过在你的虚拟主机或其他 apache 配置文件中添加它:

RewriteCond %{REQUEST_URI} \.(asp|cgi|jsp|php|php3|htm|html|pl)$
RewriteRule [foo] [bar]

使用相对路径将过于复杂,无法重定向到良好的物理位置,如下所示:

<link type="text/css" rel="stylesheet" media="all" href="css/main.css">
<script type="text/javascript" src="js/jquery.js"></script>
于 2013-10-24T12:35:41.150 回答