.htaccess隐藏文件扩展名不工作(WampServer)
我在我的网站上隐藏.html扩展时遇到了一些问题。 我使用Apache V.2.2.22在WampServer上运行。 rewrite_模块处于活动状态,我已将httpd.conf文件更改为AllowOverride all 这是我所知道的唯一一个htaccess文件,它包含的全部内容.htaccess隐藏文件扩展名不工作(WampServer),.htaccess,mod-rewrite,wampserver,file-extension,.htaccess,Mod Rewrite,Wampserver,File Extension,我在我的网站上隐藏.html扩展时遇到了一些问题。 我使用Apache V.2.2.22在WampServer上运行。 rewrite_模块处于活动状态,我已将httpd.conf文件更改为AllowOverride all 这是我所知道的唯一一个htaccess文件,它包含的全部内容 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{THE_REQU
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R=301,L,NC]
</IfModule>
这就是我放置.htaccess文件的地方
任何关于为什么这不起作用的建议都会很好
编辑:只是为了澄清这是正确的。htaccess代码使用。。。
“anubhava”的补语
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [L]
</IfModule>
您应该在.htaccess中附加此代码:
# To externally redirect /dir/foo.html to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R=301,L]
# To internally forward /dir/foo to /dir/foo.html
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [L]
您应该在.htaccess中附加此代码:
# To externally redirect /dir/foo.html to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R=301,L]
# To internally forward /dir/foo to /dir/foo.html
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [L]
只要您有第二个目录块,为您的web根目录设置Allow Override All,并且您正在访问的文件位于该文件夹而不是主根目录中,则根目录/上的Allow Override None不会有问题。您是否已尝试删除标记的htaccess文件?很高兴知道它是否因为测试失败而被绕过。您好,谢谢您的评论。我不确定你的意思,所以我在我的问题中添加了更多的httpd.conf文件。我还将Apache的版本更改为最新版本。如果你能重读我的问题,看看是否有什么不对劲,那就太好了。非常感谢,Chris Edit:我试图取出标签,但仍然没有任何结果:/你能在你的htaccess文件中放入一些垃圾,并检查你是否得到了这个问题答案中建议的500个响应,以验证你的htaccess文件是否正在使用?好的,我这样做了,我确实得到了500个错误,因此它正在读取文件。。。现在怎么办?当你说这段代码不起作用时,你是说你正在键入,比如说www.mysite.com/index.html,而它没有变为www.mysite.com/index?或者,当您访问www.mysite.com/index时,它会给您一个404?,只要您有第二个目录块为您的web根目录设置Allow Override All,并且您正在访问的文件位于该文件夹而不是主根目录中,根目录上的Allow Override None/就不会有问题。您是否已尝试删除标记的htaccess文件?很高兴知道它是否因为测试失败而被绕过。您好,谢谢您的评论。我不确定你的意思,所以我在我的问题中添加了更多的httpd.conf文件。我还将Apache的版本更改为最新版本。如果你能重读我的问题,看看是否有什么不对劲,那就太好了。非常感谢,Chris Edit:我试图取出标签,但仍然没有任何结果:/你能在你的htaccess文件中放入一些垃圾,并检查你是否得到了这个问题答案中建议的500个响应,以验证你的htaccess文件是否正在使用?好的,我这样做了,我确实得到了500个错误,因此它正在读取文件。。。现在怎么办?当你说这段代码不起作用时,你是说你正在键入,比如说www.mysite.com/index.html,而它没有变为www.mysite.com/index?或者当你访问www.mysite.com/index时,它会给你一个404?我试过了,但它给了我500个错误?奇怪的是,有一次我把这个绑起来,然后又回来了;原始代码有效吗?无论如何,欢呼似乎解决了我的问题:Laww damm它在其他浏览器中不起作用。。。现在该怎么办?你的代码似乎工作正常,因为它在最后删除了.html,但随后出现了500个错误?请将你最新的.htaccess粘贴到你的问题中,然后我可以建议你在那里进行修复。好的,明白了,我没有要求你删除现有的重写代码,这就是我编写append的原因。你也需要你现有的规则。哦,对了,抱歉误解了。新的答案很好用!非常感谢你的帮助,我试过了,但它给了我500个错误?奇怪的是,有一次我把这个绑起来,然后又回来了;原始代码有效吗?无论如何,欢呼似乎解决了我的问题:Laww damm它在其他浏览器中不起作用。。。现在该怎么办?你的代码似乎工作正常,因为它在最后删除了.html,但随后出现了500个错误?请将你最新的.htaccess粘贴到你的问题中,然后我可以建议你在那里进行修复。好的,明白了,我没有要求你删除现有的重写代码,这就是我编写append的原因。你也需要你现有的规则。哦,对了,抱歉误解了。新的答案很好用!非常感谢你的帮助
# To externally redirect /dir/foo.html to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R=301,L]
# To internally forward /dir/foo to /dir/foo.html
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [L]