2014-10-27 18 views
1

我最近開始使用.htaccess url重寫,目前我正面臨一個問題。資源的位置與URL無關(.htaccess url rewrite)

我的文件夾結構是這樣的:

  • 的index.php
  • htaccess的
  • 圖像/
  • CSS/
  • JS/
  • 功能/

我的網站l通過做所有頁面

index.php?page=register 

其中我的頁面位於函數映射。

的問題是,當我把這個在我的.htaccess

RewriteEngine On # Turn on the rewriting engine 
RewriteRule ^register/?$ index.php?page=register [NC,L] # Handle login page request 
RewriteRule ^profile/([0-9]+)/?$ index.php?page=profile&member_id=$1 [NC,L] # Handle profile page request 

當我瀏覽到

<website>/register/ 

我的CSS文件位於

../css/style.css 

但是當我導航到

<website>/profile/1/ 

我的CSS文件位於

../../css/custom.css 

如何確保頁面總是加載從

css/custom.css 

我的文件是存在的,也許是提到的index.php的位置的變量?所以,我可以做

<link rel="stylesheet" type="text/css" href="<?= $variable ?>/css/custom.css" /> 
我在Windows上使用XAMPP(最新版本)

和網站將在基於Linux的Web服務器發佈。

如果您需要更多關於我的實施的信息,我現在無法想象,我會分享它。

+0

修改.htaccess以將所有css請求重定向到您的css目錄。我想你還需要添加一個RewriteCond。 – Chad 2014-10-27 12:25:59

回答

1

有兩種方法來解決這個問題:

  1. 使用在你的CSS絕對路徑,JS,圖片文件,而不是相對的。這意味着您必須確保這些文件的路徑始於http://或斜槓/

  2. 您也可以嘗試在頁面的HTML標頭中添加以下內容:<base href="/" />,以便每個相對URL都從該URL解析而不是當前URL解析。

+0

感謝您的解決方案。我喜歡這個解決方案,因爲如果你移動文件夾,它只需要1行編輯。 – 2014-10-27 12:34:03

+0

不客氣,很高興幫助。 – anubhava 2014-10-27 12:35:11

1

如果您的網站位於例如, http://example.com/然後就去做

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

如果它位於像http://example.com/mysite/一個子目錄,那麼你必須將它添加到您的路徑

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

您應該添加以下到您.htaccess

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

如果文件存在,這將「忽略」重寫規則,以便您的css將被加載。

+0

感謝您的解決方案。奇蹟般有效。我更喜歡anubhava的答案,因爲我的文件夾位於子目錄中,的用法只需要一行就可以編輯。還是非常感謝幫助我。 – 2014-10-27 12:33:15