nginx之配置伪静态

nginx上配置.htaccess伪静态规则

在apache上.htaccess转向,只要apache编译的时候指明支持rewrite模块即可。
在Nginx中,不支持直接使用.htaccess文件配置服务器。但可以通过在Nginx的配置文件中添加相应的指令来实现类似于.htaccess的功能。
nginx要在配置文件中include .htacces文件就可以实现相同的功能了。

  • 修改.htaccess文件,
    因为apache的rewrite转向规则跟nginx的转向规则还是有一些不一样的,典型的不一样有nginx的根目录需要写在每行转向的地址前,每行规则必须以分号(;)结束,301或者404等跳转使用不同的格式。

  • 修改nginx的配置文件,增加include该.htaccess文件

    1
    2
    3
    4
    5
    6
    7
    8
    # 打开对应的配置文件
    vi /etc/nginx/sites-available/test
    # 引入规则文件
    location / {
    # 自己的规则文件路径
    include /var/www/html/mks_gw_default/.htaccess;
    }

  • 测试并重启

1
2
nginx -t;
sudo systemctl restart nginx; (nginx -s reload)

4、常见的.htaccess应用举例(部分例子引自四个例子实战讲解.htaccess文件rewrite规则)
4.1防止盗链,如果来得要访问jpe jpg bmp png结尾的url 用户不是来自我们的网站,那么让他看一张我们网站的展示图片。
RewriteEngine On

RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]

RewriteCond %{HTTP_REFERER} !^$

RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

4.2 网站升级的时候,只有特定IP才能访问,其他的用户将看到一个升级页面
RewriteEngine on

RewriteCond %{REQUEST_URI} !/upgrade.html$

RewriteCond %{REMOTE_HOST} !^24.121.202.30

RewriteRule $ http://www.nbphp.com/upgrade.html [R=302,L]

4.3把老的域名转向新域名

redirect from old domain to new domain

RewriteEngine On

RewriteRule ^(.*)$http://www.yourdomain.com/$1[R=301,L]

5、一些其他功能
5.1 引出错误文档的目录
ErrorDocument 400 /errors/badrequest.html

ErrorDocument 404 http://yoursite/errors/notfound.html

ErrorDocument 401 “Authorization Required

5.2 Blocking users by IP 根据IP阻止用户访问
order allow,deny

deny from 123.45.6.7

deny from 12.34.5. (整个C类地址)

allow from all

5.3 防止目录浏览

disable directory browsing

Options All -Indexes

5.4设置默认首页

serve alternate default index page

DirectoryIndex about.html

5.5 把一些老的链接转到新的链接上——搜索引擎优化SEO
Redirect 301 /d/file.htmlhttp://www.htaccesselite.com/r/file.html

5.6为服务器管理员设置电子邮件。
ServerSignature EMail

SetEnv SERVER_ADMINdefault@domain.com