开发者社区> 技术小牛人> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Nginx 301和apache重定向域名规则方法(多个域名,单个域名)

简介:
+关注继续查看

实例:将所有topsem.com  topsem.cn的域名都跳转到www.topsem.com这个域名,避免泛解析,有利于SEO

server

{

listen 80;

server_name *.topsem.com *.topsem.cn

index index.html index.php;

root /xxxxx/webroot;

if ($host != 'www.topsem.com' ) {

rewrite ^/(.*)$ http://www.topsem.com/$1 permanent;

}

}

 apache 重定向

<VirtualHost *:80>
DocumentRoot /wwwroot/
ErrorLog "logs/vhost-error_log"
CustomLog "logs/vhost-access_log" common
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.teamtop.com$ [NC]
RewriteRule ^(.*) http://www.teamtop.com/ [L,R=301]
</VirtualHost>

注释拓展:

last – 基本上都用这个Flag。

break – 中止Rewirte,不在继续匹配

redirect – 返回临时重定向的HTTP状态302

permanent – 返回永久重定向的HTTP状态301

 

nginx rewrite 伪静态配置参数说明(含有实例)

正则表达式匹配,其中:

* ~ 为区分大小写匹配

* ~* 为不区分大小写匹配

* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配

文件及目录匹配,其中:

* -f和!-f用来判断是否存在文件

* -d和!-d用来判断是否存在目录

* -e和!-e用来判断是否存在文件或目录

* -x和!-x用来判断文件是否可执行

flag标记有:

* last 相当于Apache里的[L]标记,表示完成rewrite

* break 终止匹配, 不再匹配后面的规则

* redirect 返回302临时重定向 地址栏会显示跳转后的地址

* permanent 返回301永久重定向 地址栏会显示跳转后的地址

一些可用的全局变量有,可以用做条件判断(待补全)

$args

$content_length

$content_type

$document_root

$document_uri

$host

$http_user_agent

$http_cookie

$limit_rate

$request_body_file

$request_method

$remote_addr

$remote_port

$remote_user

$request_filename

$request_uri

$query_string

$scheme

$server_protocol

$server_addr

$server_name

$server_port

$uri

结合QeePHP的例子

if (!-d $request_filename) {

rewrite ^/([a-z-A-Z]+)/([a-z-A-Z]+)/?(.*)$ /index.php?namespace=user&controller=$1&action=$2&$3 last;

rewrite ^/([a-z-A-Z]+)/?$ /index.php?namespace=user&controller=$1 last;

break;

多目录转成参数

abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2

if ($host ~* (.*)\.domain\.com) {

set $sub_name $1;

rewrite ^/sort\/(\d+)\/?$ /index.php?act=sort&cid=$sub_name&id=$1 last;

}

目录对换

/123456/xxxx -> /xxxx?id=123456

rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;

例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:

if ($http_user_agent ~ MSIE) {

rewrite ^(.*)$ /nginx-ie/$1 break;

}

目录自动加“/”

if (-d $request_filename){

rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;

}

禁止htaccess

location ~/\.ht {

deny all;

}

禁止多个目录

location ~ ^/(cron|templates)/ {

deny all;

break;

}

禁止以/data开头的文件

可以禁止/data/下多级目录下.log.txt等请求;

location ~ ^/data {

deny all;

}

禁止单个目录

不能禁止.log.txt能请求

location /searchword/cron/ {

deny all;

}

禁止单个文件

location ~ /data/sql/data.sql {

deny all;

}

给favicon.ico和robots.txt设置过期时间;

这里为favicon.ico为99 天,robots.txt为7天并不记录404错误日志

location ~(favicon.ico) {

log_not_found off;

expires 99d;

break;

}

location ~(robots.txt) {

log_not_found off;

expires 7d;

break;

}

设定某个文件的过期时间;这里为600秒,并不记录访问日志

location ^~ /html/scripts/loadhead_1.js {

access_log off;

root /opt/lampp/htdocs/web;

expires 600;

break;

}

文件反盗链并设置过期时间

这里的return 412 为自定义的http状态码,默认为403,方便找出正确的盗链的请求

“rewrite ^/ http://leech.c1gstudio.com/leech.gif;”显示一张防盗链图片

“access_log off;”不记录访问日志,减轻压力

“expires 3d”所有文件3天的浏览器缓存

location ~* ^.+\.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {

valid_referers none blocked *.c1gstudio.com *.c1gstudio.net localhost 208.97.167.194;

if ($invalid_referer) {

rewrite ^/ http://leech.c1gstudio.com/leech.gif;

return 412;

break;

}

access_log off;

root /opt/lampp/htdocs/web;

expires 3d;

break;

}


本文转自    geekwolf   51CTO博客,原文链接:http://blog.51cto.com/linuxgeek/999015


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何注册和申请阿里云域名?
在阿里云万网注册域名之前,你需要有阿里云账号,如果有账号可以忽略本步骤继续往下看
780 0
如何将其他注册商处的域名申请转出并转入阿里云(图文教程)
随着越来越多的用户使用阿里云产品搭建自己的网站或者部署APP等项目,将其他注册商处注册的域名转入阿里云就成了很多用户的需求,毕竟将域名和云服务器等产品都放在阿里云既方便自己管理,同时又更加放心,避免出现其他小服务商“跑路”导致自己无法管理、续费域名的情况出现。下面就以图文教程的方式给大家介绍下如何将其他注册商处的域名申请转出并转入阿里云。
986 0
域名续费如何省钱?将域名转入阿里云的一次操作过程
域名续费如何省钱?将域名转入阿里云的一次操作过程
876 0
阿里云物联网平台之Iot Studio中的web应用域名绑定
web可视化开发首次发布的是时候,会提示绑定域名,因为发布时给的那个域名别人是不能访问的,需要绑定真实的域名才可以分享给别人进行访问。假设web有多个页面呢又该如何绑定?假设有多个web应用又是如何绑定? 本文将介绍web应用如何进行域名绑定以及相关知识点介绍。
1917 0
域名续费如何省钱?将域名转入阿里云的一次操作过程
作为站长或者域名投资人,大家肯定在多个域名注册商平台都有账号,但是有时候为了某些原因我们难免需要将在A平台的域名转移到B平台。那么域名转移具体该怎么操作呢?其中又有哪些需要注意的点呢?今天就通过一次域名转移过程来演示一下。
1177 0
HH
阿里云物联网平台之web应用的域名绑定
本文主要介绍如何为已发布的应用绑定域名并做域名解析,从而允许其他访问者访问您的Web应用。
2505 0
万网域名注册促销活动 - 阿里云域名优惠口令免费获取
阿里云域名优惠口令怎么获取呢?域名优惠口令是阿里云官方推出的针对域名产品注册、转入、续费的优惠码。使用域名优惠口令,可享受一定的促销优惠。优惠口令与同域名产品的其他优惠(含代金券、折扣、满减等)不能同时使用。本文域名优惠码将和你持续分享最新阿里云域名优惠口令!
2639 0
2020年阿里云(最新域名优惠口令)获取方法
最近很多同学问要优惠口令,优惠口令是阿里云域名的优惠活动,2020年优惠口令继续可以使用,域名注册、续费或者转入输入优惠口令符合条件的域名可享受相应的优惠:
1626 0
阿里云备案审核一般多久能过?域名备案需要几天?
阿里云域名备案是大家比较关心的问题,尤其是网站域名备案时间,阿里云备案时间还是比较快的,如果用户材料齐全,提交到阿里云审核无误后,一般一天即可提交到所对应省事的管局,备案号下来的时间要以管局的审核时间为准,一般管局审核时间为10天左右。
5411 0
域名在阿里云注册的是由阿里云提供网站备案吗?
当你在阿里云注册域名后,建站还是由阿里云提供网站备案服务吗?
343 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《Nginx 代理系统常用手册》
立即下载
《Apache RocketMQ 源码解析》
立即下载
《Apache Flink-重新定义计算》PDF下载
立即下载