我对此很新,并且想知道为什么我的.htaccess文件中的代码不能从导航栏中的每个链接中删除.html扩展名,可以在www上看到实时网站。 tekmillion.com
.htaccess代码如下:
RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ $1.html [NC,L]
感谢您的帮助。
答案 0 :(得分:1)
我认为您的问题在于,期望您在导航栏中使用.html的链接应该重定向到友好的网址。这不是这条规则的工作原理。
您当前的规则允许您在浏览器中使用此类型的网址http://example.com/hello
,并在内部将其重写为http://example.com/hello.html
RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ $1.html [NC,L]
如果您的导航栏中仍有http://example.com/hello.html
之类的网址,则该规则将不会执行任何操作,因为该请求适用于/hello.html
real
文件。
因此,为了将http://example.com/hello.html
重定向到没有html扩展名的友好版本并且为了防止使用.html,您需要添加另一个规则。这是您需要使用的完整规则。
RewriteEngine On
RewriteBase /
#if someone enters URL with .html extension redirect to extensionless version
RewriteRule %{THE_REQUEST} ^[A-Z]{3,}\s/(.+)\.html
RewriteRule ^ %1? [R=302,L]
#internally rewrite extensionless URL to .html file
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ $1.html [NC,L]
让我知道这对你有何影响。