产品服务AMH 免费服务器主机面板SSL证书 免费SSL证书申请 担保单 免费安全、零费率交易平台编程助手免费智能写代码、翻译AMYSQL 免费MySQL管理工具

AMH 社区首页

 AMH社区 - 开放自由有价值的社区

[求助帖] nginx不支持.htaccess解决办法(网络转载待测试)

i868
铜牌会员
765.00 价值分

i868 发表于 2014-02-21 15:34:42
本帖最后由 i868 于 2014-2-21 15:36 编辑


nginx不支持.htaccess解决办法 可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦,下面我来给各位总结一下配置方法。


其实nginx和.htaccess一点关系都没有,只是一大堆人深受apache的影响觉得nginx应该也要支持.htaccess功能。在nginx的配置中直接include.htaccess文件就好
include /站点目录/.htaccess;
多么简单,但是更让人哭笑不得的是有大部分人根本就不知道nginx与apache是两个不同webserver程序,于是不少人这么干:在nginx里include.htaccess文件后,把apache伪静态规则的.htaccess上传到站点根目录下...无语。其实nginx可以include任何文件,而不仅仅是.htaccess。
其实nginx这样引用.htaccess跟apache还是有区别的:
1、nginx是启动引入,因为nginx特别注重效率,所以启动的时候会把所有的配置文件读入内存,然后启动个。如果发现有语法错误,则启动失败。而apache则是动态引入,每次访问站点都会重新载入配置。
2、nginx中的include是手动添加,指定目录。apache已经把.htaccess作为它的一种特色机制,并且支持站所有子目录都可以有.htaccess文件。
根际实际开发经验,很多人在早期都是用虚拟空间的多,而早期的虚拟空间基本都是apache做webserver,所以用户不需要联系空间商就能自己做伪静态,而开源程序更是方便的拓展这一功能(ecshop,wordpress,phpcms等等)。并且维护也方便,只要覆盖.htaccess就好。
其实,没有几个站点经常去修改.htaccess,并且现在基本使用vps居多。
nginx 也可使用 .htaccess文件实现多种功能。
在nginx/nginx.conf的server{}中引入 .htaccess 文件:
include /vhosts/quany.info/.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;
}



以上方法是本人转载的,未测试过!供老大研究看看AMH能否实现?




2014-02-21 15:34:42 1

CodeByMe
银牌会员
1410.00 价值分

我只能说,呵呵。这个玩意没必要,他还是nginx的规则,只不过是名字改成了.htaccess而已,而且如果你这样使用,一旦你删除了这个文件 ,重启Nginx后会无法启动!
  支持 (0分)  反对 (0分)
回复  2014-02-21 17:05:32 2

CodeByMe
银牌会员
1410.00 价值分

Apache是动态加载,Nginx则是需要重启服务的,如果是卖给别人,他们修改后如何重启服务,如果他们改错了,所有站点都会无法访问,造成损失。如果是你自己用,又何必改成这样,直接面板修改规则就好了。
  支持 (0分)  反对 (0分)
回复  2014-02-21 17:12:52 3

tanyuxiang
金牌会员
5420.37 价值分

把Marvels.Agents.of.S.H.I.E.L.D.S01E13.mkv改名成Marvels.Agents.of.S.H.I.E.L.D.S01E14.mkv就可以看到第14集了,实测有用 支持
  支持 (0分)  反对 (0分)
回复  2014-02-21 18:44:58 4

ali
银牌会员
3123.65 价值分

这又是换个名字而已。

楼上发种子吗
  支持 (0分)  反对 (0分)
回复  2014-02-21 18:56:45 5

Captain
金牌会员
6928.40 价值分

改名而已,还是nginx的规则
  支持 (0分)  反对 (0分)
回复  2014-02-22 00:41:43 6
 1  (总1页)
AMH社区列表
用户服务中心