Apache
php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(\d{1,3}\.){3}\d{1,3}$ RewriteRule ^(.*)$ - [F,L] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.aaa.com/$1 [R,L] RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] RewriteCond %{HTTP_USER_AGENT} ^$ [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^.*Discuz_phpwind.* [NC] RewriteRule .* - [F] RewriteEngine on RewriteCond %{HTTP_HOST} ^yourdomain\.com$ [NC] RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]
第一個是禁止經過服務器的ip地址來訪問網站css
第二個是強制從http跳轉到https,2種寫法第二種更好html
第三個是禁止相應useragent訪問,結果是500java
第四個是實現不帶www的跳轉到www域名web
判斷是否手機端跳轉手機頁面windows
RewriteCond %{HTTP_HOST} ^www\.test\.com(.*)$ RewriteCond %{HTTP_REFERER} !^http\:\/\/(m|www)\.test\.com(.*)$ RewriteCond %{HTTP_USER_AGENT} !ipad [NC] RewriteCond %{HTTP_ACCEPT} 「text/vnd.wap.wml|application/vnd.wap.xhtml+xml」 [NC,OR] RewriteCond %{HTTP_USER_AGENT} 「acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-」 [NC,OR] RewriteCond %{HTTP_USER_AGENT} 「dang|doco|erics|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-」 [NC,OR] RewriteCond %{HTTP_USER_AGENT} 「maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv」 [NC,OR] RewriteCond %{HTTP_USER_AGENT} 「palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany」 [NC,OR] RewriteCond %{HTTP_USER_AGENT} 「sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo」 [NC,OR] RewriteCond %{HTTP_USER_AGENT} 「teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi」 [NC,OR] RewriteCond %{HTTP_USER_AGENT} 「wapp|wapr|webc|winw|winw|xda|xda-」 [NC,OR] RewriteCond %{HTTP_USER_AGENT} 「up.browser|up.link|windowssce|iemobile|mini|mmp」 [NC,OR] RewriteCond %{HTTP_USER_AGENT} 「symbian|midp|wap|phone|pocket|mobile|pda|psp」 [NC] RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] RewriteRule ^(.*)$ http://m.test.com/$1 [L,R=302] 註釋: 第一句經過是HTTP_HOST判斷網站的域名,看是否就是要判斷的網站; 第二句是經過HTTP_REFERER判斷來源路徑,若是是自身傳統網站或手機網站就不跳轉; 第三句開始是經過HTTP_USER_AGENT來判斷瀏覽者所用設備是否爲手持設備,其中有一句是經過HTTP_ACCEPT判斷代碼類型,並在開頭和結尾排除掉ipad和macintosh; 最後一句是302重定向到相應的手機版頁面。
最近遇到一個奇怪的,注意index.php後面的?,不加問號不生效。。。api
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] </IfModule>
另外遇到一種是提示file not found,修改成這樣就能夠瀏覽器
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /index.php [L,E=PATH_INFO:$1] </IfModule>
Nginxbash
if ($http_accept_language ~* ^zh) { rewrite ^(.*)$ http://www.aaa.com; } if ($http_accept_language !~* ^zh) { rewrite ^(.*)$ http://www.bbb.com; }
判斷客戶端瀏覽器語言,訪問對應的網站服務器
set $h ''; if ($host = "store.xxx.com") { set $h P; } if ($host != 'store.xxx.com.cn') { set $h "${h}C"; } if ($h = PC) { rewrite ^(.*)$ https://$host permanent; }
判斷客戶端瀏覽器語言,以及ip
set $h ''; if ($http_accept_language ~* ^zh) { set $h I; } if ($remote_addr ~ !(58.255.190.157|27.41.211.179|221.5.29.136|222.178.71.153)) { set $h "${h}P"; } if ($h = IP) { return 404; }
雙重判斷
if ($server_port = 80) { rewrite ^(.*)$ https://$host$1 permanent; }
http跳轉https
if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" ) { rewrite ^/(.*)$ http://m.xxx.com/$1 permanent; }
判斷是不是手機端訪問
if ($http_host !~ "^www.xxx.com$") { rewrite ^(.*) http://www.xxx.com$1 permanent; }
訪問不帶www的網址跳轉到帶www的網址