-1

我正在使用 htaccess 进行 URL 重写以通过这种方式转换 URL:

www.url.com/product.php?id=3

进入

www.url.com/laptops/

我发现当斜线 / 最后存在或不存在时,相对链接的调用方式不同(css文件或图片)。

我在Apple网站上发现,如果您删除“www.apple.com/mac/”末尾的斜杠并按回车,斜杠将自动重新添加,这就是我想做的。

我尝试了几种我找到的解决方案,例如

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

但是用这个解决方案,如果我把最后的斜线去掉并按回车,导航器将“重写”FTP服务器中的确切文件夹位置,导致“找不到文件”错误。

预先感谢您的帮助...

4

1 回答 1

0

!-f 检查文件是否存在,据我从你的例子中可以看出,它并不存在,但我认为你重写的其余部分很好。

RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

但是,在您提供的示例中,您将 products.php?id=3 重定向到笔记本电脑,这是一个非常具体的重写,这意味着您必须为每个 url 进行唯一的重写,但是上面的那个会为您添加斜杠然后您需要对该确切页面进行内部重写,以将其从笔记本电脑转换为 products.php?id=3。

于 2012-11-22T12:50:13.160 回答