php - 用于自定义平面链接的 mod_rewrite apache 卡住了

标签 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。那么它应该可以工作。

最佳答案

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

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

关于php - 用于自定义平面链接的 mod_rewrite apache 卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623241/

相关文章:

javascript - 单击下拉菜单在 jquery 中生成一行不起作用

php - fatal error : uncaught exception without try/catch block

php - 第一个单词后就断掉了

laravel - 如何使用相对路径映射 Homestead.yaml 中的项目目录

php - 向 mysql 中插入多行(以逗号分隔的项目)

php - 如何在同一个表的同一列上组合 2 个 SQL 查询?

php - 伪造 cookie 的 'path' - 通过 .htaccess/javascript/或其他方式?

apache - 需要有关 Apache Rewrite 问题的帮助

python - 何时在 Python 中使用绝对路径与相对路径

relative-path - 在构建 RPM 时,如何使 _topdir 相对于 .spec 文件的位置?