我正在开发一个站点,我想通过索引文件路由所有通信。我有一个简单的测试项目,具有以下体系结构:
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 错误页面并只设置重定向到索引页面?