4

我想为我的网站创建平面链接。.htaccess代码如下:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([0-9A-Za-z]+)?$ /index.php?page=$1 [L]
    RewriteRule ^([0-9A-Za-z]+)/?$ /index.php?page=$1 [L]
</IfModule>`

现在我的网站正在运行,可以看到print_r($_GET)并获得所有价值。

我的网站有这样的代码:<img src="images/icons/image.png" />,图像位于路径:/images/icons/up.png

现在我可以访问我的网站:http://somedomain.com/home一切正常。但是当我放: 时http://somedomain.com/home/,它会卡住。

图像为浏览器获取这样的路径:http://somedomain.com/home/images/icons/image.png这是不可用的,它应该是:http://somedomain.com/images/icons/image.png

如何解决这个问题?

如果通过修改.htaccess有任何解决方案会很有帮助,因为我想对所有链接使用相对路径而不是完整路径。


感谢本·克利福德的帮助。据他说,如果我将第二条规则重定向到第一个规则而不是 index.php 的格式。然后它应该工作。

4

1 回答 1

1

您可以更改第二个重写规则以将用户重定向到路径的非/版本,而不是 index.php;然后,当加载该重定向页面时,它将使用正确的基本路径命中第一条规则。

问题是图像名称替换了 URL 中最后一个 / 之后的所有内容:当您说 somedomain.com/home 时,图像文件名将附加到 somedomain.com/ 但在第二种情况下,最后一个 /home 之后。我认为,使用重写规则来修剪这个/关闭会解决这个问题。

于 2012-05-16T17:06:25.493 回答