1

我遇到的问题是第一个 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]

你能帮我吗?

4

1 回答 1

4

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

删除斜线

如果您在那里看到斜线,只需 R=301 重定向。

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

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

为什么不能删除.html

您的问题是,一旦page变为page.html(通过内部重定向),就会向服务器发出的请求。page.html因此,您的 .htaccess 将看到对 .htaccess 的请求page.html并重定向到page. 提示无限循环。

优化你的代码

  1. 你只需要RewriteEngine On在你的顶部.htaccess
  2. 您应该将www重定向添加到代码顶部并删除L标志(请参阅删除斜线
于 2012-06-30T07:09:56.600 回答