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

相關文章
相關標籤/搜索