2010-03-13 63 views
1

我已經修改了一個網站,重定向到一個頁面:許多斜槓無法正常工作的Apache重寫?

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

它的工作原理,因爲它假設是。一切都重定向到index.php。這裏是一個工作的例子,顯示的index.php所有圖像和CSS:

http://.....com/section1 

當我嘗試的問題出現:

http://....com/section1/subsection 

頁面重定向到的index.php,但無圖象,沒有CSS,沒有JavaScript。裏面的PHP腳本一切都像這樣直接鏈接到圖片或CSS或JavaScript這樣的:

<img src="images/images1.png> ... <img src="images2.png"> 

爲什麼網址與許多斜線例如.com ../ 123/123 /什麼不工作的圖像,CSS或JavaScript時.com/no_slash_url的作品?

+0

BTW看看 「^ * $」 應爲 「^(。*)$」 「^ =啓動」 「()=集團」 「$ =最終「 – Shuriken 2010-03-13 21:56:37

+0

@達克你想達到什麼 - 你想*所有的圖像被index.php解析,或者你*不*要圖像被index.php解析? – 2010-03-13 22:11:21

+0

我希望能夠從所有php頁面中看到圖像,javascript和CSS,但我正在使用前端控制器(在index.php中)移動所有網站,這將包括良好的.php頁面。 – 2010-03-13 22:50:19

回答

2

你不用重定向就可以重寫,所以客戶端認爲它在原始的unrewritten URL中,並且所有相對路徑都將相對於該URL解析。你應該使用<base>元素能夠解決此問題:

<base href="http://myserver.com" /> 


讓我試着用一個例子闡明這一點。如果我有一個網頁 http://mysite.com/index.php和其所有圖像在 http://mysite.com/images/,我的圖像可能會引用 相對網址,如 images/myImg.png。客戶端使用地址欄中的當前路徑翻譯此URL。現在,如果我重寫我的網址,使其看起來像 http://mysite.com/mycategory/myarticle,則任何相關圖像都將解析爲 http://mysite.com/mycategory/myimages/,這是不正確的。通過將基本標籤:

<base href="http://mysite.com" /> 

每個瀏覽器現在將解決圖像相對於那個路徑,正確尋找http://mysite.com/images/

+0

這不會使dns查找每一個圖像,CSS和JavaScript什麼都沒有? – 2010-03-13 21:55:22

+0

Daok:我不確定我明白你的意思。 ''標籤用於指定其他相關URL通過解析的url。許多URL重寫CMS應用程序(如Joomla和Drupal)使用此技術。 – 2010-03-13 21:56:38

+0

我不明白這一點。爲什麼使用'base'標籤而不是簡單地使用'/ images/xyz.jpg'?但是,我並不真正瞭解OP的需求。 – 2010-03-13 22:12:54