nginx下一个页面可以重定向到nginx 子域名名吗

> wapeyang的博客详情
Apache 配置是这样的:
#.htaccess
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.yourdomain\.com RewriteRule (.*) $1 [R=301,L]
Nginx 的配置:
# /etc/nginx/nginx.conf
if ($http_host !~ “^www\.yourdomain\.com$”) { rewrite& ^(.*)&&& $1 }
//PS:这里提醒一下 非原作者加注(虽是小细节问题但对于nginx新人来说也是不知道的,所以特此在说一下,以防不清楚的同学会忽视的,平时大家写程序if 后跟的括号之间都不会有空格,但在nginx的规则中是不行的,会报错的)上面的 小括号 两边 要与 if 和左大括号 之间要有空格 不然 nginx 会提示 unknown directive
Nginx的 Rewrite Flags : last – 基本上都用这个Flag。 break – 中止Rewirte,不在继续匹配 redirect – 返回临时重定向的HTTP状态302 permanent – 返回永久重定向的HTTP状态301
转载注明:转自
人打赏支持
开源项目作者
领取时间:
作为一个开源项目作者,是时候站出来拯救世界了!
领取条件:开源项目被开源中国收录的开发者可领取
码字总数 8272
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区博客访问: 1011549
博文数量: 515
博客积分: 10540
博客等级: 上将
技术积分: 5640
注册时间:
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 系统运维
静态地址重定向到带参数的动态地址rewrite "^(.*)/service/(.*)\.html$" $1/service.php?sid=$2带参数的动态地址重定向到静态地址if ($query_string ~* id=(.*)) {&&& set $id $1;&&& rewrite "^(.*)/article.asp$" $1/article/$id.}
泛域名解析server_name
*.;server_name_in_#设置默认rootset $rootdir /usr/local/nginx/html/w3cgroup/;#匹配三级域名if ($host ~* ^([^\.]+)\.([^\.]+)\.([^\.]+)\.([^\.]+)$) {&&& set $rootdir /usr/local/nginx/html/w3cgroup/$2/$1;&&& #三级域名中有访问指定的目录则重定向到相应的二级域名下&&& rewrite "^.+upload/?(.*)$" /$1&&& rewrite "^.+ijc/?(.*)$" /$1&&&}#匹配二级域名if ($host ~* ^([^\.]+)\.([^\.]+)\.([^\.]+)$) {&&& set $rs1 $1;}#设置www时rootif ($rs1 ~* ^www$) {&&& set $rootdir /usr/local/nginx/html/platform_ig/;&&& #二级域名中有访问指定的目录则重定向到相应的二级域名下,注意,这里要使用last&&& rewrite "^.+upload/?(.*)$" upload/$1&&& rewrite "^.+ijc/?(.*)$" ijc/$1&&&}#设置非www二级域名时rootif ($rs1 !~* ^www$) {&&& set $rootdir /usr/local/nginx/html/w3cgroup/$rs1;&&& #二级域名中有访问指定的目录则重定向到相应的二级域名下&&& rewrite "^.+upload/?(.*)$" /$1&&& rewrite "^.+ijc/?(.*)$" /$1&&&}#应用rootroot $index index.php index.error_page 404 http://$host/;&
注意:if () {} 之间需要空格,否则Nginx.conf会报unknow directive 错误!
Nginx Rewrite Flags* last 相当于Apache里的[L]标记,表示完成rewrite* break 终止匹配, 不再匹配后面的规则* redirect 返回302临时重定向* permanent 返回301永久重定向
Nginx正则表达式匹配* ~ 为区分大小写匹配* ~* 为不区分大小写匹配* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
Nginx文件及目录匹配* -f和!-f用来判断是否存在文件* -d和!-d用来判断是否存在目录* -e和!-e用来判断是否存在文件或目录* -x和!-x用来判断文件是否可执行
Nginx全局变量$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
阅读(2525) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。Nginx如何配置主域名重定向到www二级域名 - 开源中国社区
当前访客身份:游客 [
当前位置:
今天把和主域名都指向了同一个IP,然后Nginx的Server里只配了
这样访问时Nginx是不是就会自动301到?其实我已经用抓包工具测试过,现在我的服务器会重定向到上,只是想来确认一下除了这个server_name是不是还有其他要配的?
共有1个答案
<span class="a_vote_num" id="a_vote_num_
不会自动的, 但是没有对应的server_name, 第一个会生效
--- 共有 2 条评论 ---
是的,你可以跟踪下为什么会跳,若没有配置的话
(3年前)&nbsp&
按你说的,第一个server_name生效也不会导致重定向到www这个域名吧?
(3年前)&nbsp&
更多开发者职位上
有什么技术问题吗?
烈冰的其它问题
类似的话题4796人阅读
OFBIZ(63)
本文章介绍了关于nginx实现带参数目录域名重定向二级域名方法,有需要学习的朋友可参考一下。
下面的代码是基于nginx的子目录301到其他域名(URL)的规则。作用是例如访问/phper/php.html (有杠和没杠是不同的,下面的代码中可以看出来),自动301到
location ~* ^/phper/ {
rewrite ^/phper/(.*)$ /$1
测试成功,OK搞定!
例如:,但实际访问的地址可能为/user.php?uid=myname。要使其能正常工作,首先在DSN解析那里需要配置泛域名解析,接下来在nginx配置文件中设置rewrtie即可。
nginx配置如下:
&&& listen&&&&& 80;
&&& server_name *.;
&if ($host ~* ^(......).) {
&&&& set $sub_name $1;
&&&& rewrite ^/ /user.php?uid=$sub_
这里假设所有的6个字符的子域名都是用户自定义域名,然后对其进行rewrite。另外可以通过set指令把表达式中的某些信息存放在一个变量中,而后可以使用它
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:431096次
积分:4423
积分:4423
排名:第5113名
原创:64篇
转载:100篇
评论:47条
(1)(1)(2)(7)(1)(2)(2)(5)(4)(10)(2)(5)(1)(1)(1)(2)(5)(23)(15)(9)(1)(1)(3)(2)(11)(4)(2)(10)(1)(10)(8)(3)(1)(4)(21)(6)要使用Nginx下的泛域名支持,必须在编译 Nginx的时候加上
--with-http_sub_module
首先需要在域名解析中增加一条记录,例如:*. 到某台服务器
原本准备换Linux服务器,所以数据迁移暂时需要使用静态页面临时代替一下,之前的article.php?id=xxx都要重定向到静态文件article/xxx.htm,下面看看Nginx是如何进行Rewrite的!
1、静态地址重定向到带参数的动态地址
rewrite&"^(.*)/service/(.*)\.html$"&$1/service.php?sid=$2& &
2、带参数的动态地址重定向到静态地址
if&($query_string&~*&id=(.*))&{ &&
&&&&set&$id&$1; &&
&&&&rewrite&"^(.*)/article.php$"&$1/article/$id.htm& &&
3、泛域名解析
server_name
server_name_in_
//此项说明参照下文解释
#设置默认root
set $rootdir /data/www/it300/;
#匹配三级域名
if ($host ~* ^([^\.]+)\.([^\.]+)\.([^\.]+)\.([^\.]+)$) {
set $rootdir /data/www/it300/$2/$1;
#三级域名中有访问指定的目录则重定向到相应的二级域名下
rewrite "^.+upload/?(.*)$" /$1
rewrite "^.+ijc/?(.*)$" /$1
#匹配二级域名
if ($host ~* ^([^\.]+)\.([^\.]+)\.([^\.]+)$) {
set $subdomain $1;
#设置www时root
if ($subdomain ~* ^www$) {
set $rootdir /data/www/it300/;
#二级域名中有访问指定的目录则重定向到相应的二级域名下,注意,这里要使用last
rewrite "^.+upload/?(.*)$" upload/$1
rewrite "^.+ijc/?(.*)$" ijc/$1
#设置非www二级域名时root
if ($subdomain !~* ^www$) {
set $rootdir /data/www/it300/$
#二级域名中有访问指定的目录则重定向到相应的二级域名下
rewrite "^.+upload/?(.*)$" /$1
rewrite "^.+ijc/?(.*)$" /$1
index index.php index.
error_page 404 http://$host/;
location ~ .*\.(php|php5)?($|/) {
fastcgi_param SCRIPT_FILENAME /data/www/it300/$subdomain/$fastcgi_script_
fastcgi_split_path_info ^(.+.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_
fastcgi_pass
unix:/tmp/php-cgi.
fastcgi_index index.
include fcgi.
}注意:if () {} 之间需要空格,否则Nginx.conf会报unknow directive 错误!
订阅到阅读器:
Copyright &#169;
Development based on &
数据正在加载中…

我要回帖

更多关于 nginx 重定向 的文章

 

随机推荐