我最近在网站上为一位朋友工作,她可以上传她的画作。与这些图像一起输入一些信息,如大小和技术。这些图像被添加到相册中,然后显示在图库中。功能就在那里,现在我只想重写网址,使它们看起来不像album.php?album_id=xx&name=xx
。我希望网址像album/id/name
。为此,我有以下重写规则:
RewriteRule ^album/([0-9]+)/([0-9a-zA-Z_-]+) album.php?album_id=$1&naam=$2 [NC]
这意味着如果我转到album/1/test
,它应该获取该专辑的数据并显示它,但它不能完全发挥作用。它确实获取了该专辑的数据,但是没有加载图像(即使在检查它正确加载的源时)并且页面上没有任何样式,即使样式表正确加载。奇怪的是,如果我转到album.php?album_id=1&naam=test
整个页面都有效,那么我知道album.php页面中的代码是有效的。我还使用以下代码创建了一个test.php
文件:
<?php
echo 'ID: ' . $_GET['album_id'] . '<br>';
echo 'Naam: ' . $_GET['naam'];
使用以下重写规则:
RewriteRule ^test/([0-9]+)/([0-9a-zA-Z_-]+) test.php?album_id=$1&naam=$2 [NC]
如果我去test/1/test
,我会得到我想要的东西:
ID: 1
Naam: test
所以我知道重写是有效的。
可以找到album.php的代码here
知道是什么导致样式无法加载而图像无法正确加载吗?
答案 0 :(得分:0)
听起来您正在使用样式表和图像的相对路径。
如果您为图片使用images/album.jpg
,则会查找:
http://www.yoursite.com/images/album.jpg
直接加载index.php
。
但是,它会寻找:
http://www.yoursite.com/album/1/test/images/album.jpg
有你的重写规则。
一个简单的解决方案是始终使用相对于Web服务器根目录的绝对路径,如:
/images/image.jpg
/styles/styles.css
请注意开头的斜杠/
。