【问题标题】:mod_rewrite apache for custom flat links gets stuck自定义平面链接的 mod_rewrite apache 卡住了
【发布时间】:2012-05-16 17:00:48
【问题描述】:

我想为我的网站创建平面链接。 .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) 看到并获取所有值。

我的网站有这样的代码:&lt;img src="images/icons/image.png" /&gt;,其中图像位于路径:/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 的格式。那么它应该可以工作了。

【问题讨论】:

  • 将 base-url 元标记包含在您的脑海中。看看这是否能解决问题。

标签: php mod-rewrite relative-path


【解决方案1】:

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

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

【讨论】:

  • 好的,明白了。但是,如果您按照您的说法构建用于重定向的代码会很有帮助,因为我是这个 mod_rewrite 东西的新手。
  • 也许是这样:RewriteRule ^([0-9A-Za-z]+)/?$ /$1 [R]
猜你喜欢
  • 1970-01-01
  • 2012-05-28
  • 2021-11-01
  • 1970-01-01
  • 2020-07-13
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 2017-10-07
相关资源
最近更新 更多