apache、nginx各类伪静态设置

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

相关文章
相关标签/搜索