天天看點

Apache開啟Rewrite

環境:

系統 Windows

Apache 2.2

加載Rewrite子產品:

在conf目錄下httpd.conf中找到

LoadModule rewrite_module modules/mod_rewrite.so

這句,去掉前邊的注釋符号“#”,或添加這句。

允許在任何目錄中使用“.htaccess”檔案,将“AllowOverride”改成“All”(預設為“None”):

# AllowOverride controls what directives may be placed in .htaccess files.

# It can be “All”, “None”, or any combination of the keywords:

# Options FileInfo AuthConfig Limit

#

AllowOverride All

在Windows系統下不能直接建立“.htaccess”檔案,可以在指令行下使用“echo a> .htaccess”建立,然後使用記事本編輯。

Apache Rewrite子產品的簡單應用:

Rewrite的所有判斷規則均基于Perl風格的正規表達式,通過以下基礎示例能寫出符合自己跳轉需求的代碼。

1、請求跳轉

目的是如果請求為.jsp檔案,則跳轉至其它域名通路。

例如:通路www.clin003.com/a.php跳轉至b.clin003.com/b.php網頁,通路www.clin003.com/news/index.php跳轉至b.clin003.com/news/index.php網頁

注意:不是使用HTML技術中的meta或者javascript方式,因為www.clin003.com/a.php這個檔案并不存在,用的是Apache2.2伺服器中的Rewrite子產品。

修改 .htaccess或apche的配置檔案httpd.conf檔案,添加以下内容

RewriteEngine on

#開啟Rewrite子產品

RewriteRule (.*)\.php$ http://b.clin003.com/$1\.jsp [R=301,L,NC]

#截獲所有.jsp請求,跳轉到http://b.clin003.com/加上原來的請求再加上.php。R=301為301跳轉,L為rewrite規則到此終止,NC為不區分大小寫

2、域名跳轉

如果請求為old.clin003.com下的所有URL,跳轉至b.clin003.com

RewriteCond %{REMOTE_HOST} ^old.studenthome.cn$ [NC]

#針對host為old.clin003.com的主機做處理,^為開始字元,$為結尾字元

RewriteRule (.*) http://b.clin003.com/$1 [R=301,L,NC]

3、防盜鍊

如果本網站的圖檔不想讓其它網站調用,可以在 .htaccess或者apche的配置檔案httpd.conf檔案中添加以下内容

RewriteCond %{HTTP_REFERER} !^$

#如果不是直接輸入圖檔位址

RewriteCond %{HTTP_REFERER} !img.clin003.com$ [NC]

#且如果不是img.clin003.com所有子域名調用的

RewriteCond %{HTTP_REFERER} !img.clin003.com/(.*)$ [NC]

RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]

RewriteCond %{HTTP_REFERER} !google.com [NC]

RewriteCond %{HTTP_REFERER} !google.cn [NC]

RewriteCond %{HTTP_REFERER} !baidu.com [NC]

RewriteCond %{HTTP_REFERER} !feedsky.com [NC]

RewriteRule (.*)\.(jpg|jpeg|jpe|gif|bmp|png|wma|mp3|wav|avi|mp4|flv|swf)$ http://clin003.com/err.jpg [R=301,L,NC]

#截獲所有.jpg或.jpeg……請求,跳轉到http://clin003.com/err.jpg提示錯誤的圖檔,注:該圖檔不能在原域名下,也不能在該.htaccess檔案有效控制的檔案夾中

4、不需要定義.htaccess檔案

在Apache2\conf\httpd.conf 最後一行添加

RewriteEngine On

RewriteRule ^(.*)-htm-(.*)$ $1.php?$2

重新開機Apache

登陸背景開啟全僞