URL 重写没有做它应该做的,但代码看起来不错
URL rewriting not doing what it's supposed to do, but code seems fine
我最近一直在为一个朋友开发一个网站,她可以在该网站上上传她的画作图片。除了这些图像之外,还会输入一些信息,例如尺寸和技术。这些图像被添加到相册中,然后显示在图库中。功能在那里,现在我只想重写 url,使它们看起来不像 album.php?album_id=xx&name=xx
。我希望 url 像 album/id/name
。为此,我有以下重写规则:
RewriteRule ^album/([0-9]+)/([0-9a-zA-Z_-]+) album.php?album_id=&naam= [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=&naam= [NC]
如果我去 test/1/test
,我会得到我想要的:
ID: 1
Naam: test
所以我知道重写是有效的。
可以找到 album.php 的代码 here
知道是什么导致样式无法加载和图像无法正确加载吗?
听起来您正在为样式表和图像使用相对路径。
如果您使用 images/album.jpg
作为您的图像,它将查找:
http://www.yoursite.com/images/album.jpg
当您直接加载 index.php
时。
但是,它会查找:
http://www.yoursite.com/album/1/test/images/album.jpg
使用您的重写规则。
一个简单的解决方案是始终使用相对于网络服务器根目录的绝对路径,例如:
/images/image.jpg
/styles/styles.css
注意开头的斜杠 /
。
我最近一直在为一个朋友开发一个网站,她可以在该网站上上传她的画作图片。除了这些图像之外,还会输入一些信息,例如尺寸和技术。这些图像被添加到相册中,然后显示在图库中。功能在那里,现在我只想重写 url,使它们看起来不像 album.php?album_id=xx&name=xx
。我希望 url 像 album/id/name
。为此,我有以下重写规则:
RewriteRule ^album/([0-9]+)/([0-9a-zA-Z_-]+) album.php?album_id=&naam= [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=&naam= [NC]
如果我去 test/1/test
,我会得到我想要的:
ID: 1
Naam: test
所以我知道重写是有效的。
可以找到 album.php 的代码 here
知道是什么导致样式无法加载和图像无法正确加载吗?
听起来您正在为样式表和图像使用相对路径。
如果您使用 images/album.jpg
作为您的图像,它将查找:
http://www.yoursite.com/images/album.jpg
当您直接加载 index.php
时。
但是,它会查找:
http://www.yoursite.com/album/1/test/images/album.jpg
使用您的重写规则。
一个简单的解决方案是始终使用相对于网络服务器根目录的绝对路径,例如:
/images/image.jpg
/styles/styles.css
注意开头的斜杠 /
。