我想为我的网站创建平面链接。 .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。那么它应该可以工作。
最佳答案
您可以更改第二个重写规则以将用户重定向到路径的非/版本,而不是 index.php;然后,当加载该重定向页面时,它将使用正确的基本路径命中第一条规则。
问题是图像名称替换了 URL 中最后一个/之后的所有内容:当您说 somedomain.com/home 时,图像文件名附加到 somedomain.com/但在第二种情况下,最后的/是 < em>在 家之后。我认为使用重写规则来修剪这个/关闭会解决这个问题。
关于php - 用于自定义平面链接的 mod_rewrite apache 卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623241/