這篇文章跟RewriteEngine有關

所以就po給大家看!

我就是看到這篇文章才解決的!

 

如果你原本就是使用 Apache 作為 web server 的話,Zope 可以用以下的三種方式與 Apache 搭配使用:

a) CGI: PCGI, FastCGI

b) Proxy Module

c) Rewrite Module

使用 Apache 作為 Zope 的前端,除了有與原本系統架構結合的優點之外,還能讓多種不同的環境同時存在。譬如說除了 Zope 外,系統上還想用 PHPMyAdmin(PHP), OpenWebMail(Perl) 等等這些不同的自由軟體程式的話,使用 Apache 作為前端是最方便的方式了。

我們要介紹的是使用 Rewrite Module 的方式,將瀏覽的 Request 重導給 Zope。

Apache 的設定檔 ( 以Debian 3.0為例 ) 是在 /etc/apache/httpd.conf,我們需要確定是否已經將 rewrite_module 和 proxy_module 這二個模組載入。我們可以籍由搜尋下列二行來確認:

 LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so
LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so

如果這二行的前面被加上「#」井字號當成是註解的話,就要先刪除井字號後存檔,然後重新啟動 Apache 才能使這二個 Module 可以使用。

接下來的是 Rewrite Module 的設定範例:

 RewriteEngine On
RewriteLog "/var/log/apache/rewrite_log"
RewriteLogLevel 9
RewriteRule ^(.*) http://localhost:8080$1 [P]

RewriteEngine On 」這一行才正式啟動了 Rewrite Modele ,「RewriteLog」設定重導的記錄檔,「RewriteLogLevel」的參數可以從 0~9 ,數字愈大記錄的內容愈詳細,設定正確後可以將數字歸零。最後這個「RewriteRule」就是設定重導的規則。

RewriteRule 的語法是RewriteRule Pattern Substitution [flags]

這裡的 pattern 就是「^(.*)」,「'^'」是指行首,「.」可以匹配任意字元,「*」是重複前一字元任意次數,「(.*)」將括號內的字元當作一組變數,可在 Substitution 中使用 $1 取用。這行的意思是將URL的path全部擷取。例如ServerName 是www.abc.com,Request URL http://www.abc.com/Members/song/index_html ,這時「(.*)」會符合「/Members/song/index_html」這一整串。

Substitution 是重導的目的地,這裡我們把 Request 重導到本機的 8080 port,「$1」會把「/Members/song/index_html」這一整串加到 URL 的後面來。

Flags 我們只用了一個 P,這是代表 Proxy 的意思,就是說我們直接向重導後的URL取回網頁內容之後再傳回給 Client 端,這樣Client端並不會知道我們在中間作了代理。在這個範例中Zope是啟動在8080 port,透過rewrite_module和proxy_module的重導和代理,讓Client端不需要指定port來瀏覽網站,完全不會感覺到這中間的有任何的改變。


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 jianmin2 的頭像
    jianmin2

    閒人站 (收集好文章,分享全世界! )

    jianmin2 發表在 痞客邦 留言(0) 人氣()