.htaccess 使用htaccess在URL末尾添加可能缺少的斜杠?

.htaccess 使用htaccess在URL末尾添加可能缺少的斜杠?,.htaccess,url-rewriting,.htaccess,Url Rewriting,我正在使用htaccess进行URL重写,以这种方式转换URL: www.url.com/product.php?id=3 进入 我发现当最后的斜杠/不存在时,相对链接的调用方式就不同了(css文件或图片) 我在苹果网站上发现,如果删除“www.Apple.com/mac/”末尾的斜杠并按enter键,斜杠将自动重新添加,这就是我想要做的。 我尝试了几种解决方案,比如 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*[^/])$ /$1/

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

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

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

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

我尝试了几种解决方案,比如

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]
但在这个解决方案中,如果我去掉最后的斜杠并按enter键,导航器将“重写”FTP服务器中的确切文件夹位置,从而导致“未找到文件”错误


提前感谢您的帮助…

本网站-f检查文件是否存在,从您的示例中我可以看出,它并不存在,但我认为您的重写的其余部分是好的

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

然而,在您给出的示例中,您将products.php?id=3重定向到laptop,这是一个非常具体的重写,意味着您必须对每个url进行唯一的重写,但是上面的一个将为您添加斜杠,然后您将需要对确切的页面进行内部重写,以便将其从laptop转换到laptopproducts.php?id=3。

感谢您的快速回答。实际上,我对这里的所有“id”都有一个特定的重写,每次重写都会显示一个不同的文件夹名称,例如www.url.com/phones/。我编写的示例将在localhost上从localhost/site/phones(删除斜杠)重写为localhost/phones/(重新添加斜杠,但文件“site”不存在)
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]