使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;
}
(0)

相关推荐

  • apache中使用.htaccess文件缓存图片的配置方法

    浏览器能够简单读取.htaccess文件的缓存控制头,而缓存头会要求浏览器将图片或其它任何媒体保留2周时间(或者更久),这样浏览器就能够随时调用图片,直到图片过期. 两周后浏览器重新将过期的图片存入缓存. 万一浏览器缓存被清空,浏览器会从缓存中重新加载图片或其它媒体. 1,打开网站所在的根目录的.htaccess文件,如没有,请新建. 2,输入以下代码 复制代码 代码如下: # Image and Flash content Caching for One Month<FilesMatch &quo

  • Apache服务器中使用.htaccess实现伪静态URL的方法

    很多朋友可能是空间也就是虚拟主机,自己就没有权限来管理apache的httpd.conf文件了,自然就不太可能可以在这上面写静态规则了,下面我们可以让主机商开启支持.htaccess方法,这样就可以自己写了. 首先配置服务器启动重写模块 打开 Apache 的配置文件 httpd.conf . 将#LoadModule rewrite_module modules/mod_rewrite前面的#去掉. 保存后重启Apache 写重写规则 举例说明,test.php里的代码为 <?php $id=

  • Apache使用.htaccess 屏蔽恶意 User Agent(防蜘蛛)

    一.登记在册的恶意 User Agent 1."Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; .NET CLR 2.0.50727)" 下面是网站日志中的两条记录,这个 User Agent 会重复访问注册页面,并获取验证码,这是垃圾留言和恶意注册的开始. 复制代码 代码如下: 116.242.22.10

  • Apache服务器中.htaccess的基本配置总结

    .htaccess文件(或者"分布式配置文件"提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录.作为用户,所能使用的命令受到限制.管理员可以通过Apache的AllowOverride指令来设置. - 子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令. - .htaccess必须以ASCII模式上传,最好将其权限设置为644. 错误文档的定位 常用的客户端请求错误返回代码: 401 Authorizat

  • 修改.htaccess实现子目录绑定示例分享

    复制代码 代码如下: <IfModule mod_rewrite.c>RewriteEngine On  RewriteBase /# 把 www.jb51.net改为你要绑定的域名.# 如果是域名:RewriteCond %{HTTP_HOST} ^((www|blog)\.)?jb51\.net$RewriteCond %{HTTP_HOST} ^((www|blog)\.)?127.0.0.1$# 把 www改为要绑定的目录.RewriteCond %{REQUEST_URI} !^/w

  • apache .htaccess文件详解和配置技巧总结

    一..htaccess的基本作用 .htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令.       .htaccess主要的作用有:URL重写.自定义错误页面.MIME类型配置以及访问权限控制等.主要体现在伪静态的应用.图片防盗链.自定义404错误页面.阻止/允许特定IP/IP段.目录浏览与主页.禁止访问指定文件类型.文件密码保护等.       .htaccess的用途范围主要针对当前目录. 二.启用.htaccess的配置启用.htaccess,需要修改http

  • Ubuntu下开启Apache对.htaccess 的支持

    步骤: 终端运行 复制代码 代码如下: sudo a2enmod 程序提示可供激活的模块名称,输入: 其中rewrite 修改/etc/apache2/sites-enabled/000-default (该链接指向的是站点配置文件) 把(默认的www目录.或者需要应用.htaccess的目录)下的AllowOverride 属性改为All,保存. 重新加载apache 复制代码 代码如下: sudo /etc/init.d/apache2 restart 附xampp的ModRewrite开启

  • Apache使用 .htaccess 来实现强制https访问的方法

    我们可以用Apache的.htaccess的重定向规则来实现http强制跳转到https访问网站.( 重要提示:必须将代码放到.htaccess文件内容的最前面,以保证重定向优先权.) 代码如下: RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://xpsss.com/$1 [R,L] 或者 RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteR

  • 让Apache 2支持.htaccess并实现目录加密的方法

    实现需求 最近在使用学校电脑时,经常遇到这么个场景:想下载个CodeBlocks用于coding或想下个vpt来玩会万智,但通过机房网络访问一些国外网站的下载速度只有10+kB/s,不到100m的文件总能让人等很久. 以前通过百度云来解决了这个问题,现在百度云下载这些文件需要使用客户端(大文件?),所以寻思着有没有什么好的解决方案. 突然想起自己在阿里云有个小服务器,在上面挂了个OJ,大多数资源都是闲置的.所以很简单,我就在网站目录下面传了我需要的常用文件上去,走阿里云的带宽下载.但直接放上去的

  • 使Nginx服务器支持.htaccess的方法

    可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦,下面我来给各位总结一下配置方法. 其实nginx和.htaccess一点关系都没有,只是一大堆人深受apache的影响觉得nginx应该也要支持.htaccess功能.在nginx的配置中直接include .htaccess文件就好 include /站点目录/.htaccess; 多么简单,但是更让人哭笑不得的是有大部分人根本就不知道

  • 使Nginx服务器支持中文URL的相关配置详解

    关于中文URL已经是老话题了,到目前为止依然有很大一部分SEOer都会说不要使用中文URL,对搜索引擎不友好. 不过,那已经是以前的事了,谷歌很早就支持了中文URL,当时百度技术没有跟上,URL中会出现乱码. 在谷歌的算法中,URL包含关键字是会给页面赋予一定权重的,英文是,中文也是,朽木猜测百度之前没有给予中文URL权重,可能是因为识别的问题. 经过一些简单的测试,朽木发现中文URL中包含关键字,对百度SEO有很积极的影响. 不过需要注意的是最好使用UTF8编码,虽然百度有了"一定的识别能力&

  • 详解Linux环境下使Nginx服务器支持中文url的配置流程

    1:确定你的系统是UTF编码 [root@Tserver ~]# env|grep LANG LANG=en_US.UTF-8 2:NGINX配置文件里默认编码设置为utf-8 server { listen 80; server_name .inginx.com ; index index.html index.htm index.php; root /usr/local/nginx/html/inginx.com; charset utf-8; } 如果是用securecrt 上传文件,请选

  • 升级nginx以支持http2的方法

    本文介绍了升级nginx以支持http2的方法,分享给大家,具体如下: 一键升级脚本 https://github.com/whisshe/upHttp2.git HTTP/2 的优势 相比 HTTP/1.x,HTTP/2 在底层传输做了很大的改动和优化: HTTP/2 采用二进制格式传输数据,而非 HTTP/1.x 的文本格式.二进制格式在协议的解析和优化扩展上带来更多的优势和可能. HTTP/2 对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量.而 HTTP/1.x 每

  • nginx下支持PATH_INFO的方法实例详解

    本文实例分析了nginx下支持PATH_INFO的方法.分享给大家供大家参考,具体如下: 要想让nginx支持PATH_INFO,首先需要知道什么是pathinfo,为什么要用pathinfo? pathinfo不是nginx的功能,pathinfo是php的功能. php中有两个pathinfo,一个是环境变量$_SERVER['PATH_INFO']:另一个是pathinfo函数,pathinfo() 函数以数组的形式返回文件路径的信息;. nginx能做的只是对$_SERVER['PATH

  • thinkphp在低版本Nginx 下支持PATHINFO的方法分享

    最近在用thinkphp做一个项目,基本完成后部署到nginx服务器上才发觉nginx是不支持pathinfo的那么我们如何来处理呢. Nginx环境 在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.conf(在/usr/local/nginx/conf/nginx.conf或者通过find / | grep nginx.conf来查找位置)中配置转发规则实现:在nginx配置文件中添加: location / { if (!-e $request_filename)

  • Nginx服务器https配置的方法示例

    Linux:Linux version 3.10.0-123.9.3.el7.x86_64 Nginx:nginx/1.6.3 openssl:1.0.1e 申请证书 目前网上有不少机构提供个人免费 ssl 证书,有效期几个月到几年不等.以 StartSSL :https://www.startssl.com为例, 申请成功后有效期 3 年,到期后可免费续租. 具体申请过程也很简单. 注册登录以后选择 Certificates Wizard >> DV SSL Certificate 申请一个

  • 简介Nginx服务器的Websockets配置方法

    Nginx 1.3.13 已经发布了,该版本支持 Connection: upgrade 和 Upgrade 头,这就意味着支持WebSocket代理了.很多人都在等这个新特性以至于 "Nginx 支持 websockets 吗?" 成为了 freenode上的#nginx频道最常问的问题. 有了这种方式,让我们来看看Nginx的WebSocket实现. Nginx新添加的Websockets配置指令 文档中提到的配置如下:(译者注:原文中的链接其实不是文档的链接.现在nginx的官方

  • 编写Go程序对Nginx服务器进行性能测试的方法

    目前有很多提供Go语言HTTP应用服务的方法,但其中最好的选择取决于每个应用的实际情况.目前,Nginx看起来是每个新项目的标准Web服务器,即使在有其他许多不错Web服务器的情况下.然而,在Nginx上提供Go应用服务的开销是多少呢?我们需要一些nginx的特性参数(vhosts,负载均衡,缓存,等等)或者直接使用Go提供服务?如果你需要nginx,最快的连接机制是什么?这就是在这我试图回答的问题.该基准测试的目的不是要验证Go比nginx的快或慢.那将会很愚蠢. 下面是我们要比较不同的设置:

  • php检测iis环境是否支持htaccess的方法

    modrewrite.php 复制代码 代码如下: <?php echo "mod_rewrite works"; ?> open_me.php 复制代码 代码如下: <?php echo "mod_rewrite does not work"; ?> 复制代码 代码如下: RewriteEngine onRewriteRule ^open_me.php$ modrewrite.php

随机推荐