我遇到的问题是第一个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]
你可以帮帮我吗?
答案 0 :(得分:4)
删除尾部斜杠很容易。删除.html
不是。
如果你在那里看到斜线,则R = 301重定向。
RewriteRule ^(.*)/$ $1 [R=301]
不要添加L
标志,因为您要继续处理此请求。也是第一条规则。
.html
您的问题是,page
成为page.html
后(通过内部重定向),会向服务器提供page.html
的新请求。那么您的.htaccess会看到page.html
的请求并重定向到page
。提示无限循环。
RewriteEngine On
.htaccess
www
重定向添加到代码顶部并删除L
标记(请参阅删除斜杠)