酷!學園

技術討論區 => Linux 討論版 => 主題作者是: olderboy 於 2008-07-24 11:14

主題: 請教rewrite 寫法
作者: olderboy2008-07-24 11:14
想請教大家一下有關 rewrite的問題

我現在想做一個功能,當大家打 http://www.xxxx.idv.tw/aaabbb 時,就會把網頁導到後端的tomcat去抓取資料
那我的寫法如下:
引用
RewriteRule   ^/([a-z0-9]+)$               ajp://192.168.1.18:8009/m/vi.do?alias=$1  [P,L]

但這樣寫,我會發現一個問題,就是如果用戶,只要打 www.xxxx.idv.tw/xxx,xxx隨便打的話!!都會導到後端的tomcat去
且access_log裡顯示的是:
引用
http://www.xxxx.idv.tw/xxx?alias=xxx

為什麼access_log不是顯示:
引用
http://www.xxxx.idv.tw/m/vi.do?alias=xxx
呢??

有沒有可能有什麼辦法,可以讓只存在的名稱,才往tomcat去送呢??
我想了很久,似乎是沒有辦法這樣做的樣子

不知大家有沒有什麼想法呢??

Thanks

Olderboy
主題: 回覆: 請教rewrite 寫法
作者: twu22008-07-24 11:23
請問你要怎麼知道那個名稱是不是存在?
如果你沒辦法判斷, 那為什麼會認為前頭的 apache 就有辦法知道?

log 上頭, 對 apache 來說, 本來就是存取到 /xxx 啊 (打錯嗎? 應該不會有 ?alias=xxx 吧), 後頭那個不是轉到另一個服務去了嗎? 又不是 apache 在提供那服務, 自然不會出現在 apache 的 log 吧.
主題: 回覆: 請教rewrite 寫法
作者: hoyo2008-07-24 11:39
你的 .htaccess 寫在 / 還是 /m ?

如果寫在 /  ,那就把 code 貼出來,說不定是被其他條件影響
主題: 回覆: 請教rewrite 寫法
作者: olderboy2008-07-24 12:29
請問你要怎麼知道那個名稱是不是存在?
如果你沒辦法判斷, 那為什麼會認為前頭的 apache 就有辦法知道?

log 上頭, 對 apache 來說, 本來就是存取到 /xxx 啊 (打錯嗎? 應該不會有 ?alias=xxx 吧), 後頭那個不是轉到另一個服務去了嗎? 又不是 apache 在提供那服務, 自然不會出現在 apache 的 log 吧.

就是因為無法判斷,所以,我就覺得該是做不到的。

但在 apache裡的log,真的是出現了:www.xxxx.idv.tw/xxx?alias=xxx,而不是只有  www.xxx.idv.tw/xxx
這點真的也是滿奇怪的,下面就是整個我寫的內容,也還請大家指點一下了~ Thanks

引用
RewriteCond   %{REQUEST_URI}           .do$  [OR]
RewriteCond   %{REQUEST_URI}           .jsp$ [OR]
RewriteCond   %{REQUEST_URI}           .jar$ [OR]
RewriteCond   %{REQUEST_URI}           .zip$ [OR]
RewriteCond   %{ReQUEST_URI}           .xml$ [OR]
RewriteCond   %{REQUEST_URI}           .cab$
RewriteRule   /(.*)$                       ajp://192.168.1.18:8009/$1 [P,L]
RewriteCond   %{REQUEST_FILENAME}          ab.jpg$
RewriteRule   /(.*)$                       ajp://192.168.1.18:8009/$1 [P,L]
RewriteCond   %{REQUEST_FILENAME}          Vinput.gif$
RewriteRule   /(.*)$                       ajp://192.168.1.18:8009/$1 [P,L]
RewriteRule   ^/([a-z0-9]+)$               ajp://192.168.1.18:8009/m/vi.do?alias=$1  [P,L]
主題: 回覆: 請教rewrite 寫法
作者: hoyo2008-07-24 12:50
apache 404 設定為何?
主題: 回覆: 請教rewrite 寫法
作者: olderboy2008-07-24 13:18
apache 404 設定為何?

下面這是我設定的其它的部份

引用
<VirtualHost "_default_:80">
ServerAlias *.stage.imiyu.com
#DirectoryIndex index.do
ErrorDocument 401 "NG"
ErrorDocument 404 /index.html
AddDefaultCharset utf-8
RewriteEngine On