用于自定义扁平链接的mod_rewrite apache卡住了

时间:2012-05-16 17:00:48

标签: php mod-rewrite relative-path

我想为我的网站创建平面链接。 .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 会有所帮助,因为我想使用所有链接的相对路径而不是完整路径。


感谢Ben Clifford的帮助。根据他的说法,如果我将第二个规则重定向到第一个规则的格式而不是index.php。然后它应该工作。

1 个答案:

答案 0 :(得分:1)

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

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