nginx和apache下的url rewrite
将服务器上面的数据同步到本地之后,发现打开首页显示不正常,本地服务器是apache,经过打开url rewrite之后本地首页正常显示。
原因是phpwind本身支持了url rewrite的功能,但是本地的apache服务器没有开启这项功能,导致了首页的排版紊乱。
远程服务器用的的nginx和本地的apache的url rewrite配置不能通用,借此机会学习下,url rewrite的功能。
url rewrite是服务器的一个模块,功能包括,配置一些访问的网址的重写,其中的语句规则是基于正则表达式,建议先看我的另一篇博客正则表式http://www.cnblogs.com/yiluxiuxing/p/4307488.html
其中涉及到的变量都是基于服务器上(apache或者nginx)通用的变量,具体一些变量详细解释以及nginx下rewrite的一些配置实例请参考http://www.cnblogs.com/yiluxiuxing/p/4309365.html
比如为了使网址更加友好,可以将用户看到的网址www.simple.com/ming-tian-shi-ge-hao-tian-qi.html重定位到www.simple.com/ming/tian/shi/ge/hao/tian/qi.html,这样用户看到的就是一个网址而不是一个个的文件夹。
其他还有很多有用的功能,比如,防止别的网站引用你网站的图片,如果别人使用的是你网站的图片的话,那么占用的是你的网站的流量,但是却不能给你带来访问量
还比如可以自己写一个友好的404页面,如果发生404错误的时候就将页面定位到自己写的404页面。
还可以将css文件还有js文件设置保存在用户浏览器上面的时间,加快网页的加载速度。
下面是nginx上面的rewrite配置文件
server {
listen 80;
server_name www.simple.com ;
root /home/www/simple;
index index.php index.html index.htm;
charset utf-8;
access_log logs/simple.access.log main;
#如果请求主机字段不等于'www.simple.com'则重定向到http://www.simple.com/*
if ( $host != 'www.simple.com' ) {
rewrite ^/(.*)$ http://www.simple.com/$1 permanent;
}
#如果当前请求的文件路径不存在,将出现/tool/的网址重定向到/tool/index.php,将出现kisswall/的网址重定向到/kisswall/index.php
if ( !-e $request_filename ) {
rewrite ^(.*)tool/(.*)$ $1tool/index.php last;
rewrite ^(.*)kisswall/(.*)$ $1kisswall/index.php last;
}
location / {
directio 1;
output_buffers 1 128k;
index index.php index.html index.htm ;
rewrite ^(.*?)-(.*)$ $1.php?$2;
}
#指定404错误页面
error_page 404 /404.html;
location = /50x.html {
}
#设置js、css过期时间
location ~ \.(css|js)$ {
expires 1w;
}
#防盗链
location ~ \.(jpg|jpeg|png|gif|swf|ico)$ {
valid_referers none bloacked *.erqilu.com *.renren.com *.weibo.com;
if ( $invalid_referer ) {
return 404;
}
expires max;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;
include fastcgi_params;
}
#禁止htaccess
location ~ /\.ht {
deny all;
}
#将出现/min/的网址定位到/min/index.php?*
location /min/{
rewrite /min/([a-z]=.*) /min/index.php?$1 last;
#expires 1w;
}
}
与之一部分对应的.htaccess文件
如果访问的网址不是“localhost”或者“127.0.0.1”则跳转到http://localhost/
RewriteEngine On
RewriteCond %{HTTP_HOST} !^localhost [NC]
RewriteCond %{HTTP_HOST} !^127.0.0.1 [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*) http://localhost/$1 [L]
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^.*$ - [L] #如果访问的网址文件不存在,则如果网址中出现/tool/则将网址重写为$1tool/index.php 网址中若出现/kisswall/同理
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)tool/(.*)$ $1tool/index.php [L]
RewriteRule ^(.*)kisswall/(.*)$ $1kisswall/index.php [L]
RewriteEngine On
DirectoryIndex index.php index.html index.htm
#将以-分割的网址转换为$1.php?$2的格式
RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
RewriteCond %{HTTP_HOST} !^localhost [NC]
RewriteRule ^(.*) http://localhost/$1 [L]
#定义404页面
ErrorDocument 404 /404.html
#防盗链
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://localhost/.*$ [NC]
RewriteRule .(jpg|jpeg|png|gif|swf|ico)$ - [R=302,L]
对照可参考apache和nginx配置的异同,
其中nginx的url rewrite配置文件存放的位置是:usr/local/nginx/conf
nginx和apache下的url rewrite的更多相关文章
- (Nginx和PHP下)URL重写,TP实现URL重写
UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址. 优点 一:提高安全性,可以有效的避免一些参数名.ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话 ...
- APACHE 服务器开启URL REWRITE模块的方法
最近做wordpress,发现固定链接总是设置不了.后来发现是由于apache服务器的URL REWIRITE模块没有开启导致. 查询了资料之后终于设置成功,记录下步骤: 1:开启apache的url ...
- [转]nginx下的url rewrite
转:http://zhengdl126.iteye.com/blog/698206 if (!-e $request_filename){rewrite "^/index\.html&quo ...
- Nginx配置ThinkPHP下的url重写(隐藏入口)
搭建好项目后,在网址上输入域名,只能访问首页,其他页面全是404. 在域名后面和控制器前面加上index.php就可以访问. 在tp5官网手册查找后进行配置修改. 打开nginx.conf 后 ,在s ...
- apache url rewrite 的RewriteRule参数详解
apache url rewrite 的RewriteRule参数详解 我们经常会在apache那边对一些url进行一些重写操作,那么就会涉及到很多的重写策略的选择,比如重定向的方式,参数的处理,规则 ...
- Apache 和 Nginx 下的 URL 重写
URL 重写和重定向 URL 重写是将页面映射到本站另一页面, 而重定向则是将页面映射到另一主机(域名). 其中临时重定向(R=302)和永久重定向(R=301)都是亲搜索引擎的, 是 SEO 的重要 ...
- Nginx下支持ThinkPHP的Pathinfo和URl Rewrite模式
下面介绍如何使Nginx支持ThinkPHP的Pathinfo和URL Rewrite模式. 1.ThinkPHP给出了ThinkPHP的官方解决方案,如下: 打开Nginx的配置文件 /etc/ng ...
- thinkphp nginx php-fpm url rewrite 导致 404 错误
## thinkphp nginx php-fpm url rewrite 导致 404 错误 之前thinkphp的系统部署在apache上,考虑到在并发性能nginx比apache强悍得多,所以在 ...
- Nginx下WordPress的Rewrite
最近接触WP Super Cache,该插件要求固定链接必须是重写的,故用到Rewrite. 我的是这样配置的: /usr/local/nginx/conf/rewrite/wordpress.con ...
随机推荐
- android shape详解
shape--> shape属性: rectangle: 矩形,默认的形状,可以画出直角矩形.圆角矩形.弧形等 solid: 设置形状填充的颜色,只有android:color一个属性 andr ...
- 黑马程序员——OC语言Foundation框架 结构体
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)结构体 NSRange(location length) NSPoi ...
- jquery api调用
本框架内置组件以及部分插件都可以通过jquery选择器进行API调用,支持链式操作,如下示例. <script type="text/javascript"> $(&q ...
- 加强版for循环
/*加强版for循环 * 5.0以后有加强版for循环 * for(String name:nameArray){} * 1.String name:声明会带有数组单一元素的循环变量 * 数组元素 ...
- 使用变量替换批量部署GoldenGate
GoldenGate运行时允许在参数文件中动态指定一个值,即在参数文件中使用一个变量,而不是一个静态的值,当启动OGG进程时,根据环境动态加载此变量的值,达到在不同环境中,通过变量定义,实现多个环境的 ...
- Ubuntu 14.10 下设置时间同步
在启动HBase机群的时候,发现了一个错误,因为机群时间不同步导致,所以要同步集群时间. Linux的时间分为System Clock(系统时间)和Real Time Clock (硬件时间,简称RT ...
- hdu 2042
Ps:...好简单的一道题...直接AC,就是利用递归 代码: #include "stdio.h"int find(int num,int n);int main(){ int ...
- RFID Hacking③:使用ProxMark3嗅探银行闪付卡信息
0×00 前言 RFID是Radio Frequency Identification的缩写,术语为射频识别,俗称电子标签.按照工作频率的不同,RFID标签可以分为低频(LF).高频(HF).超高频( ...
- 初次学习Linux需要注意的
Linux系统可以说是最安全的了,世界500强里90%的公司使用的都是Linux系统,可见Linux的市场有多广阔.但是就像很多朋友说的那样,想学习Linux开发,不知如何开始学习,该怎么办?学习Li ...
- 关于HttpWebRequest.KeepAlive
于HTTP服务器每个客户端2个连接的限制这两天猫在家里搞一个多线程的断点续传得C#程序,发现同时只能开2个线程下载,其他的线程一律要等待,这样就导致下载大文件时其他线程经常超时,郁闷好久.今天回公司无 ...