【发布时间】:2008-11-09 20:30:35
【问题描述】:
我正在开发一个使用 url 路由的 PHP 网站。我希望该站点独立于目录,以便可以将其从 http://site.example.com/ 移动到 http://example.com/site/ 而无需更改 HTML 中的每个路径。当我链接到不受路由影响的文件时,问题就出现了,比如 css 文件、图像等。
例如,假设控制器welcome 的操作index 的视图包含图像img/banner.jpg。如果页面是使用 url http://site.example.com/welcome 请求的,浏览器将请求图像为http://site.example.com/img/banner.jpg,这非常好。但是如果页面是用http://site.example.com/welcome/index的url请求的,浏览器会认为welcome是一个目录,会尝试获取图片为http://site.example.com/welcome/img/banner.jpg,这显然是错误的。
我已经考虑了一些选项,但它们对我来说似乎都不完美:
-
使用 url 重写重定向来自 (*.css|*.js|...) 或 (css/*| 的请求js/*|...) 到正确的路径。
问题:每个扩展都必须在重写规则中命名。如果有人要添加新的文件类型(例如 mp3 文件),它不会被重写。
-
使用 php 函数为每个相对路径添加基本路径。例如:
<img src="<?php echo url::base(); ?>img/banner.jpg" />问题:看起来很乱; css- 和 js- 包含路径的文件必须由 PHP 处理。
那么,如何保持网站目录的独立性?有没有比我想出的更好/更清洁的方法?
【问题讨论】:
标签: php url-routing