"<div id=""content_wrap"">
在网上查到的资料很多人都说nginx目前不支持.htaccess文件,简直是扯淡...
nginx完全可以支持.htaccess文件,请按如下操作:
1、新建一个.htaccess文件,在里面输入规则,如本站的规则:
# nginx rewrite rule
rewrite ^(.*?)/article/.*?-(\d+)-(\d+)\.html$ $1/show.html?id=$2&page=$3 break;
rewrite ^(.*?)/category/.*?-(\d+)-(\d+)\.html$ $1/list.html?id=$2&page=$3 break;
rewrite ^(.*?)/tag/([^/]+)/?$ $1/tag.html?w=$2 break;
rewrite ^(.*?)/tag/([^/]+)/(\d+)$ $1/tag.html?w=$2&page=$3 break;
# end nginx rewrite rule
保存文件并上传到网站的根目录。
2、修改虚拟主机配置
# ee /usr/local/etc/nginx/nginx.conf #freebsd 7.2默认nginx默认安装的配置文件
在你需要添加伪静态的虚拟机中的server块中引入.htaccess文件
include /usr/www/.htaccess #请把这个改成你.htaccess文件的位置,
保存、退出重启nginx
# /usr/local/etc/rc.d/nginx restart
刷新看看,如果能正常器从证明你的rewrite rule的语法是正确
nginx的rewrite规则您可以直接放在主机配置中也可以放在独立的文件用includeinru,存为独立的文件时,保存到一个新的文件(文件名可以任意取,不过建议还是用.ht(注意有个“点”)开头的文件名,因为这个服务器里面默认过滤了外部对.ht开头的文件访问:
location ~ /\.ht {"
deny all;
}
"
如果还用.htaccess。。。
还不如不用Nginx
.htaccess 的优点在于支持 "不重启服务程序" 时, 修改即时生效.
如果 nginx 不支持这个特性的话, 与其说支持 .htaccess ,还不如说支持 "rewrite" 来得实际.
----
我并没有去求证 nginx 支不支持这个特性.
######拜托, 不要一下子发了这么多关于 nginx 实现 .htaccess 的帖子...
.htaccess 是一个"实在没办法"的办法.
他的实现, 是因为每次接受请求时, 都去读取 .htaccess 文件, 重新解析配置, 如果这个请求是一个深层的目录, 那么, 服务程序会查找每一级目录下的 htaccess 文件, 子目录的 htaccess 还会覆盖上一层目录的 htaccess 规则.
这是一个相当卖力不讨好的事情.
他唯一的生存环境, 就是那么运行于"虚拟空间" 的网站.
还有,这类提供商大多数都采用apache 而非 nginx.
再说, 就算提供商采用nginx, 我想,也不太可能提供 nginx + .htaccess 这个功能吧.
######红薯鸡动了...
但这种实现方式跟apache是完全两回事情吧....
######
.htaccess 这东西好慢,一般写在里面,官方有兼容版 |
无语了,还自以为是的 说 支持.htaccess, 它只是一个文件名。。 nginx从早期版本开始,就支持rewrite, rewrite和apache的rewrite有区别
将文件名换成其他文件,一样使用。比如
include html/guize.txt
######呵呵!
待会测试下
谢谢红薯大哥。
######不评论。标记一下。######这样修改但.htaccess规则和APACHE不一样
而且要重启nginx 或者reload才生效
而APACHE是修改.htaccess规则就生效了
"版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。