没有尾部斜线导致404,如何使用htaccess修复?

时间:2017-08-09 03:39:43

标签: apache .htaccess mod-rewrite

网址为:

  • (没有工作)http://example.com/seller/samsung
  • (作品)http://example.com/seller/samsung/

我对这些类型的网址的.htaccess规则如下:

RewriteRule ^seller/[^/]+/(.*)$ ./$1

如何让这两个网址转到同一页面?

1 个答案:

答案 0 :(得分:2)

您可以强制在网址末尾显示一个尾部斜杠。您可以在.htaccess中使用以下内容:

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

在测试之前,请确保清除缓存。

编辑:

RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

以上是做什么的?因此条件会抓取您的目录,例如/samsung,并检查其末尾是否有/。如果没有,它将抓取URL末尾的目录(再次/samsung并向其添加/。它将使用301重定向执行此操作并将离开你/samsung/

至于L标志(取自官方文件):

  

[L]标志使mod_rewrite停止处理规则集。在   大多数情况下,这意味着如果规则匹配,则没有进一步的规则   将被处理。这对应于Perl中的最后一个命令,或   C中的break命令。使用此标志指示当前   应立即应用规则而不考虑进一步的规则。