2012-04-22 61 views
0

我忙着在我的網站做url重寫時,突然發生什麼事情,至極我真的不知道它是如何發生或如何這是可能的,以及如何也許禁止這種情況發生,probaby一些litle錯誤在URL重寫規則,我試圖強制www的地址前,但當我刪除www。並按下輸入它提出了一個地址,他不能找到原因,他沒有把一個/後面的.nl奇怪的PHP行爲

以某種方式一個額外的index.php得到固定之間和發生了什麼,以這種方式可以看到整個網站沒有任何CSS標識...:S

它是可再現的,正好契合了額外的index.php之間像xample和整個網站上可以看到,沒有任何標記衝浪從css文件

[ http://www.capoeiravelsen.nl/index.php/index.php?page=home]

這裏發生了什麼事?爲什麼不以這種方式讀取css文件? ofcourse用戶不只是要解決這個額外的index.php之間,但做到這一點提出了一種安全漏洞或缺陷或什麼的....

[編輯]

是啊,聽起來邏輯,它不能獲取的CSS導致它看在一個 differend目錄或東西,仍然不知道它是如何仍然可以 獲取所有其他文檔,因爲一個名爲index.php文件夾doesnt 以任何方式存在。

它happent這個重寫規則:

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

在那裏我被迫在WWW的地址,但是當一些隨機瘋狂 用戶將要刪除的WWW。並按下輸入奇怪的效果 發生。

那麼該請求將改變爲: [HTTP://www.capoeiravelsen.nlindex.php/頁=家庭]在瀏覽器 說,它無法找到該網頁ofcourse

沒有注意到/中.php和?之間我的推杆一個/在之間.NL 和的index.php所以它會成爲 [http://www.capoeiravelsen.nl/index.php/?page=home]和按壓回車

那麼整個地址改變於: [http://www.capoeiravelsen.nl/index.php/index.php?page=home]

其中瀏覽該網站是可能的,但沒有標記的......

我解決了這個問題通過改寫重寫規則爲:

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

當一些隨機用戶將刪除www。並按下輸入任何東西 瘋狂發生www。剛剛被再次被迫

+0

這種奇怪的效果,當用戶將保存域的書籤加www也會發生。 – Moose 2012-04-22 14:05:32

回答

0

它會嘗試將CS​​S文件從目錄/index.php/您的Web服務器上獲取,而不是/預期。這不是一個安全漏洞

1

要鏈接的CSS相對

<link href="inc/stylesheet.css" rel="stylesheet" type="text/css"> 

當你訪問/index.php/index.php?page=home瀏覽器外觀的CSS文件中

/index.php/inc/stylesheet.css 

的解決方案是:

  1. 修復重寫,所以它不會允許使用「/」 PHP文件(這樣的OS查找後FOL DER命名爲 「的index.php」
  2. 鏈接CSS文件是絕對: 即:

[鏈接HREF = 「/ INC/stylesheet.css中」 相對= 「樣式」 類型=「文本/ CSS 「/>

(更換[與< :))

希望它可以幫助

0

我不知道你的重寫規則因爲你還沒有發佈他們,但缺少CSS的問題是,因爲你要鏈接的樣式表及其他文件中的相對路徑的HTML,即:

<link href="inc/stylesheet.css" rel="stylesheet" type="text/css"> 

由於您的網址是http://www.capoeiravelsen.nl/index.php/index.php?page=home,使瀏覽器請求位於http://www.capoeiravelsen.nl/index.php/inc/stylesheet.css之下的文件,當然這在服務器上不存在。

一種解決辦法是改變所有的路徑在你的HTML絕對,即:

<link href="http://www.capoeiravelsen.nl/inc/stylesheet.css" rel="stylesheet" type="text/css">