2011-03-16 73 views
2



我想根據所選國家/地區顯示網址,因此我使用htaccess根據所選國家/地區重定向網址。例如,我想要的網址是這樣的:www.example.com/us/index.html使用htaccess時不適用樣式

我有我的文件,如下面

public_html/includes/style.css 
public_html/index.php 

中的index.php我已經鏈接的樣式表,如「../includes/style.css

當我嘗試www.example.com風格應用正確。一旦用戶在index.php中選擇國家,url將被重定向爲www.example.com/us/index.html。但是對於這個重定向頁面,風格沒有正確應用。

我已經跟隨在.htaccess重定向頁面狀態,

RewriteRule ^([^/]+)/([^\.]+)\.html$ index.php?cnt=$1 [L] 

感謝。

回答

1


感謝您的幫助。這是我用來解決這個問題的代碼:

$base = $_SERVER['REQUEST_URI']; 
$base=parse_url($base); 
$parts=explode("/",$base['path']); 
$path=$parts[1]; 
$home="/".$path; 

<link rel='stylesheet' type='text/css' href='$home/includes/style.css'/> 

但是它的工作對我來說,只有當我在本地主機上運行,​​是因爲我把下home/localhost/example/
我的文件,但是當我把它放在服務器上,我再次面臨風格問題。所以我只是改變了HOME變量是這樣的:

$home=""; 

所以現在的路徑變得,

/includes/style.css 

代替

//includes/style.css 
1

如果你包括相對路徑的CSS文件你的CSS將返回404,當你的URL超出了最初的主目錄移動(或似乎遷出,使用的.htaccess時)

解決這一是使用絕對路徑,包括你的CSS

,而不是../includes/style.css

使用<?php echo $webroot; ?>/includes/style.css

$webroot這裏其事的根目錄的完整路徑,當你項目

+0

感謝。我使用了相同的,在標題中我有一個變量$ home,其中包含$ home =「../」之類的路徑。同時鏈接我使用的樣式表像href =「<?php echo」$ home.includes/style.css「;?>」。這是對的嗎? – VKGS 2011-03-16 05:36:46

+0

nope。 $ home仍然是相對路徑。您需要獲取您的域的基本網址。如果您使用的是虛擬主機,您可以簡單地使用/includes/style.css,但如果您使用的是諸如http:// localhost/project1之類的東西,那麼您必須弄清楚您的webroot在index.php中的含義。你有什麼樣的設置? – JohnP 2011-03-16 05:44:42

+0

你是對的。爲了測試目的,我把我的文件放在「localhost/projects/sample /」下。示例文件夾包含諸如includes/style.css之類的目錄以及諸如index.php,.htaccess之類的文件。是否有任何具體的功能,以獲得在PHP的baseurl? – VKGS 2011-03-16 05:49:40

2

訪問www.example.com/us/index.html時,style.css計算出的網址顯然不存在www.example.com/us/includes/style.css。

因此,根據一個什麼樣的打算是,無論是

  • 使用絕對鏈接的樣式表,如「/includes/style.css」
  • 創建htaccess的重寫規則修正網址
  • 創建每個國家
1

1個樣式表應該是/includes/style.css,不../includes/style.css,僅此而已。
始終使用絕對路徑。