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的网址