將服務器上面的數據同步到本地以後,發現打開首頁顯示不正常,本地服務器是apache,通過打開url rewrite以後本地首頁正常顯示。php
緣由是phpwind自己支持了url rewrite的功能,可是本地的apache服務器沒有開啓這項功能,致使了首頁的排版紊亂。css
遠程服務器用的的nginx和本地的apache的url rewrite配置不能通用,藉此機會學習下,url rewrite的功能。html
url rewrite是服務器的一個模塊,功能包括,配置一些訪問的網址的重寫,其中的語句規則是基於正則表達式,建議先看個人另外一篇博客正則表式http://www.cnblogs.com/yiluxiuxing/p/4307488.htmlnginx
其中涉及到的變量都是基於服務器上(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,這樣用戶看到的就是一個網址而不是一個個的文件夾。apache
其餘還有不少有用的功能,好比,防止別的網站引用你網站的圖片,若是別人使用的是你網站的圖片的話,那麼佔用的是你的網站的流量,可是卻不能給你帶來訪問量瀏覽器
還好比能夠本身寫一個友好的404頁面,若是發生404錯誤的時候就將頁面定位到本身寫的404頁面。服務器
還能夠將css文件還有js文件設置保存在用戶瀏覽器上面的時間,加快網頁的加載速度。學習
下面是nginx上面的rewrite配置文件網站
1 server { 2 listen 80; 3 server_name www.simple.com ; 4 root /home/www/simple; 5 index index.php index.html index.htm; 6 charset utf-8; 7 access_log logs/simple.access.log main; 8 #若是請求主機字段不等於'www.simple.com'則重定向到http://www.simple.com/* 9 if ( $host != 'www.simple.com' ) { 10 rewrite ^/(.*)$ http://www.simple.com/$1 permanent; 11 } 12 #若是當前請求的文件路徑不存在,將出現/tool/的網址重定向到/tool/index.php,將出現kisswall/的網址重定向到/kisswall/index.php 13 if ( !-e $request_filename ) { 14 rewrite ^(.*)tool/(.*)$ $1tool/index.php last; 15 rewrite ^(.*)kisswall/(.*)$ $1kisswall/index.php last; 16 } 17 location / { 18 directio 1; 19 output_buffers 1 128k; 20 index index.php index.html index.htm ; 21 rewrite ^(.*?)-(.*)$ $1.php?$2; 22 } 23 #指定404錯誤頁面 24 error_page 404 /404.html; 25 location = /50x.html { 26 } 27 #設置js、css過時時間 28 location ~ \.(css|js)$ { 29 expires 1w; 30 } 31 #防盜鏈 32 location ~ \.(jpg|jpeg|png|gif|swf|ico)$ { 33 valid_referers none bloacked *.erqilu.com *.renren.com *.weibo.com; 34 if ( $invalid_referer ) { 35 return 404; 36 } 37 expires max; 38 } 39 location ~ \.php$ { 40 fastcgi_pass 127.0.0.1:9000; 41 fastcgi_index index.php; 42 fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name; 43 include fastcgi_params; 44 } 45 #禁止htaccess 46 location ~ /\.ht { 47 deny all; 48 } 49 #將出現/min/的網址定位到/min/index.php?* 50 location /min/{ 51 rewrite /min/([a-z]=.*) /min/index.php?$1 last; 52 #expires 1w; 53 } 54 }
與之一部分對應的.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