2011-04-21 184 views
0

假設我的網站的域爲[http://mywebsite.com] [1],並打開index.php。該腳本從url獲取$ page,$ section,$ language變量。所以[http://mywebsite.com/index.php?lang=en & section = home & page = sitemap] [2]打開屬於「home」部分的英文站點地圖頁面。我希望將相同的網址重寫爲[http://mywebsite.com/home/sitemap_en.html] [3]。爲了達到這個目的,我已經把以下內容放在.htaccess中: RewriteCond %{REQUEST_URI} .+\/.+ RewriteRule ^(.+)\/(.+)_(mk|en|al)\.html$ index.php?lang=$3&section=$1&page=$2 [L] 但是現在有一個很大的問題。當我訪問這樣的網址時,找不到文件,因爲文件style.css位於根文件夾中,而不是[http://mywebsite.com/home/style.css][4],並且服務器正在尋找它。 「家」不是真正的文件夾,它不存在,它只是一個部分。對於所有的jpg,png,js,gif等都是一樣的。我怎樣才能以我喜歡的方式重定向頁面,以及如何用真實路徑找到文件?RewriteRule更改文件的物理路徑

p.s.某些部分像[http://mywebsite.com/index.php?lang=en & section = contact] [5]根本沒有網頁。他們應該達到像這樣:[http://mywebsite.com/contact_en.html][6] 我有他們,以前的規則:RewriteRule ^(。+)_(mk | en | al)。 html $ index.php?lang = $ 2 & section = $ 1

回答

2

您可以使用base標籤在你的頭,使所有的相對路徑關閉特定HREF的這樣:

<head> 
    <base href="http://mywebsite.com/" /> 
</head> 

會導致所有相對(不只是CSS)的URL被加載了你的根目錄

OR

由別人說只是讓你的路絕對通過把前面的「/」在前面:

<link rel="stylesheet" href="/css/mycss.css" type="text/css" /> 
+0

非常感謝這個答案,我甚至不知道基本標籤是否存在。現在我不必編輯所有的hrefs,這是很多:) – pankipan4e 2011-04-21 15:24:12

+0

啊,是的,更好的答案。 – Cups 2011-04-22 14:28:01

0

您是否嘗試通過使用斜槓作爲前綴來引用相對於頂級目錄(主目錄)的css和js文件等?也就是說,如果你讓他們在站點主目錄的目錄名爲風格:

<link rel=StyleSheet href="/styles/style.css" type="text/css" /> 
+0

嘿,我怎麼也不敢相信這明顯是:)我所有的SRC和HREF就像HREF =「圖像/設計/ favicon.ico「,當我把斜槓像href =」/ images/design/favicon.ico「他們加載得很好,DUH :)謝謝很多兄弟。我認爲這將解決我所有的問題,希望新的事情不會發生。 – pankipan4e 2011-04-21 15:14:27