重新路由以索引与工作映像


Reroute to index with working images

我正在开发一个站点,我想通过索引文件路由所有通信。我有一个简单的测试项目,具有以下体系结构:

root-   
   -.htaccess   
   -index.php   
   -icon.jpg

我的.htacces如下:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)$ index.php/$1 [L]

这有效,现在可以访问 www.mysite.com/abc/def/ghi,并且仍然显示索引.php页面。

我可以通过检索 $_SERVER[ 'REQUEST_URI' ] 来使用 abc/def/ghi。

但是,让我们在我的索引中说我这个.php:

echo "<img src='icon.jpg'>";    

该图标不会显示,因为服务器将在以下位置搜索它:

www.mysite.com/abc/def/ghi/icon.jpg

而不是

www.mysite.com/icon.jpg

我做错了什么,如何专业地解决这个问题?

简单来说,您应该对图像使用绝对路径而不是相对路径。

解决此问题的一种方法是为项目定义一个全局常量,例如:

define('IMAGES', 'http://website.root.domain.com'.'/images/');
OR
define('IMAGES', DOMAIN_URL.'/images/');

然后在输出代码中使用它,例如:

<img src='<?php echo IMAGES;?>icon.jpg'>

输出将导致完整且不可更改的路径,如下所示:

<img src='http://website.root.domain.com/images/icon.jpg'>

请注意,我冒昧地假设您将图像存储在他们自己的个人目录中,而不是在主公共目录中。

这并不能回答这个问题,但是为什么不能创建一个 404 错误页面并只设置重定向到索引页面?