开发者社区> 问答> 正文

谁说nginx不支持.htaccess文件? - nginx报错

"<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;
}
"

展开
收起
montos 2020-06-02 12:42:10 903 0
1 条回答
写回答
取消 提交回答
  • "

    如果还用.htaccess。。。
    还不如不用Nginx

    ######

    .htaccess 的优点在于支持 "不重启服务程序" 时, 修改即时生效.

    如果 nginx 不支持这个特性的话, 与其说支持 .htaccess ,还不如说支持  "rewrite" 来得实际.

    ----

    我并没有去求证 nginx 支不支持这个特性.

    ######

    拜托, 不要一下子发了这么多关于 nginx 实现 .htaccess 的帖子...

    .htaccess 是一个"实在没办法"的办法.

    他的实现, 是因为每次接受请求时, 都去读取 .htaccess 文件, 重新解析配置, 如果这个请求是一个深层的目录, 那么, 服务程序会查找每一级目录下的 htaccess 文件, 子目录的 htaccess 还会覆盖上一层目录的 htaccess 规则.

    这是一个相当卖力不讨好的事情.

    他唯一的生存环境, 就是那么运行于"虚拟空间" 的网站.

    还有,这类提供商大多数都采用apache 而非 nginx.

    再说, 就算提供商采用nginx, 我想,也不太可能提供 nginx + .htaccess 这个功能吧.

    ######

    红薯鸡动了...

    但这种实现方式跟apache是完全两回事情吧....

    ######

    .htaccess 这东西好慢,一般写在里面,官方有兼容版

    ######在网站目录下建议一个.htaccess的文件,里面是nginx的urlrewrite规则,再在nginx.conf里include进去,这就叫做nginx支持.htaccess了?

    我打个比方吧,在php环境里建议一个aa.asp,然后配置服务器用php去解析aa.asp,我是不是可以说php支持asp了?

    http://www.hdj.me/disdain-wurenzaidi-guy###### @ZhiWei en######www.hdj.me 这个是兄弟你的博客吧?######

    无语了,还自以为是的 说 支持.htaccess, 它只是一个文件名。。 nginx从早期版本开始,就支持rewrite, rewrite和apache的rewrite有区别

    将文件名换成其他文件,一样使用。比如

    include html/guize.txt

    ######

    呵呵!

    待会测试下

    谢谢红薯大哥。

    ######不评论。标记一下。######

    这样修改但.htaccess规则和APACHE不一样

    而且要重启nginx 或者reload才生效

    而APACHE是修改.htaccess规则就生效了

    "
    2020-06-02 12:46:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《Nginx 代理系统常用手册》 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载