我遇到的问题是,第一个URL的作品,第二个不。重定向循环由于htaccess文件
http://www.example.com/podcasts
http://www.example.com/podcast
他们都是HTML文件,因此增加的.html到第二个会使其工作。只有当html扩展被剥离(这是我想要发生的)重定向问题出现时。
我认为问题在于“podcast”既是一个文件夹,也是一个html文件。换句话说,有一个名为“podcast”的文件夹,还有一个名为podcast.html的文件,其扩展名被自动删除(这是我的意图)。
那么我该如何解决这个重定向问题?我希望这个文件夹和html仍然具有相同的名称和html扩展名,以及现在的HTML扩展名。
这是我的.htaccess文件的副本(编辑:添加l标志)
RewriteEngine On
RewriteBase/
#removing trailing slash
RewriteRule ^(.*)/$ $1 [R=301,L]
#non www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#shtml
AddType text/html .html
AddHandler server-parsed .html
#html
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]
很肯定的是,重写规则涉及%{} REQUEST_FILENAME -f导致了问题!该循环不会发生404错误。
想法?
您提供的两个网址几乎都是相同的,只是第一个网址末尾有一个附加的“s”。这是一个错字吗? – brezanac
什么是输入网址,以及您将被重定向到的网址是什么? (请参阅Chrome/Firebug中的Net inspector) –
@holodoc不,这不是一个错字。想法是“播客”既是一个文件夹也是一个html文件,所以它不起作用,而“播客”只是一个html文件,因此它没有重定向问题。 – Jeremy