2009-08-04 25 views
0

我想我的htaccess文件使用mod_rewrite導致我的頁面被多次調用。任何人都可以看到,如果這可能發生在我目前的htaccess文件?或者如果甚至有可能?這隻發生在view.php頁面(從我所見過的)。我的htaccess文件是否導致多個呼叫到一個頁面?

# REWRITE DEFAULTS 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^www\.mysite\.com$ [NC] 
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L] 

# /view.php?t=h5k6 externally to /h5k6 
RewriteCond %{THE_REQUEST} ^GET\ /view\.php 
RewriteCond %{QUERY_STRING} ^([^&]*&)*t=([^&]+)&?.*$ 
RewriteRule ^view\.php$ /%2? [L,R=301] 

# /h5k6 internally to /view.php?t=h5k6 
RewriteRule ^([0-9a-z]+)$ view.php?t=$1 [L] 

什麼在我的PHP腳本正在發生的事情是,他們被稱爲一次以上或至少是一個功能更是被稱爲不止一次,即使我已經確定了被稱爲一次!

謝謝全部

+0

你在瀏覽器中得到了迴應嗎?它幾乎看起來像這些規則將導致一個循環,並永遠不會運行你的頁面。 – bmb 2009-08-05 18:06:22

回答

1

那些mod_rewrite條件和規則不會導致腳本被多次調用。規則本身可以多次調用。每次URL成功重寫爲新請求時,新請求都會再次調用規則。但是,只要一次識別並檢索「真實」資源(腳本,網頁等),就會停止。

您的網頁上還有其他的引用會引起其他請求嗎?例如,一個IMG標籤將導致瀏覽器發出另一個請求。這些請求將導致規則再次運行。它看起來像一個點(如picture.jpg)不符合你的規則,但別的可能。

其他要查找的內容是引用的CSS和腳本。

0

不看你粘貼的代碼,我想說不。 htaccess遍歷每行並在匹配請求的第一條規則處停止