删除尾部斜杠并重定向html

时间:2012-06-30 03:55:23

标签: html .htaccess redirect slash trailing

我遇到的问题是第一个URL有效,第二个没有。

http://www.example.com/podcast/episode1
http://www.example.com/podcast/episode1/

有没有办法将所有尾部斜杠版本重定向到非尾部斜杠版本?

这里的问题更严重,因为这些都不起作用:

example.com/podcast
example.com/podcast /

只有这一个有效:

example.com/podcast.html

我不希望html扩展名可见。

到目前为止,这是我在.htaccess文件中的代码:

#shtml

AddType text/html .html
AddHandler server-parsed .html

#html

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

#index redirect

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ 
RewriteRule ^index\.html$ http://example.com/ [R=301,L]

#non www to www

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
你可以帮帮我吗?

1 个答案:

答案 0 :(得分:4)

删除尾部斜杠很容易。删除.html不是。

删除斜杠

如果你在那里看到斜线,则R = 301重定向。

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

不要添加L标志,因为您要继续处理此请求。也是第一条规则。

为什么你无法删除.html

您的问题是,page成为page.html后(通过内部重定向),会向服务器提供page.html请求。那么您的.htaccess会看到page.html的请求并重定向到page。提示无限循环。

优化代码

  1. 您只需RewriteEngine On
  2. 顶部的.htaccess
  3. 您应该将www重定向添加到代码顶部并删除L标记(请参阅删除斜杠