【发布时间】:2013-02-03 09:48:58
【问题描述】:
我在我的网站上隐藏 .html 扩展时遇到了一些问题。
我正在使用 Apache V.2.2.22 在 WampServer 上运行。
rewrite_module 处于活动状态,我已将 httpd.conf 文件更改为 AllowOverride all
这是我所知道的唯一一个 htaccess 文件,这就是它所包含的全部...
<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>
它不起作用,我不知道为什么...这是我的 httpd.conf 文件
DocumentRoot "c:/wamp/www/"
<Directory />
Options FollowSymLinks
AllowOverride all
Order deny,allow
Deny from all
</Directory>
<Directory "c:/wamp/www/">
Options Indexes FollowSymLinks
AllowOverride all
# onlineoffline tag - don't remove
Order Allow,Deny
Allow from all
</Directory>
这是我放置.htaccess 文件的地方...
E:\wamp\www\DesktopVersion\.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>
【问题讨论】:
-
只要您有第二个目录块为您的 Web 根目录设置
Allow Override All(并且您正在访问的文件在该文件夹中而不是主根目录中),根目录上的Allow Override None( /) 不会有问题。您是否尝试过删除标记的 htaccess 文件?很高兴知道它是否只是因为未通过此测试而被绕过。 -
您好,感谢您的评论。我不确定你的意思,所以我在我的问题中添加了更多的 httpd.conf 文件。此外,我已将 Apache 的版本更改为最新版本。如果您可以重新阅读我的问题,看看是否有任何问题,那就太好了。谢谢一堆,克里斯
Edit: I tried to take the <ifModule> Tags out and still nothing:/ -
您能否在您的 htaccess 文件中放入一些垃圾,并检查您是否收到此问题的答案 (stackoverflow.com/questions/9234289/…) 中建议的 500 响应,以验证您的 htaccess 文件是否正在被使用?
-
好的,我这样做了,我确实收到了 500 错误,所以它正在读取文件...现在怎么办?
-
当你说这段代码不起作用时,你的意思是你正在输入,比如
www.mysite.com/index.html,它没有变成www.mysite.com/index?或者当你去www.mysite.com/index它给你一个404?
标签: .htaccess mod-rewrite wampserver file-extension