url - .htaccess 隱藏index.php 並使用pathinfo 導致css js載入錯誤

來源:互聯網
上載者:User
自己搞了個簡單的php 架構,使用 " ?var=val1&var2=val2" 形式的url 視圖載入都正常,
apache下為了美化url, 使用 .htaccess規則 隱藏index.php使用pathinfo 格式的url,頁面和資料都可以載入,但是 css、js檔案路徑卻變成了 pathinfo 格式的 url/ public/css/style.css了,導致css、js載入路徑出錯了。求一個正確的 .htaccess規則,讓樣式檔案正確載入。

目前的出錯情況:
項目架構放在 網站根目錄下的capframework檔案夾下 ,
使用 http://127.0.0.1/capframework/ 訪問一切ok,css載入ok,
css url 為:http://127.0.0.1/capframework/public/css/captain.css
當使用 http://127.0.0.1/capframework/article/list/tag/php訪問時,css、js就出問題,路徑變成了
http://127.0.0.1/capframework/article/list/tag/public/css/captain.css

當前使用的規則為:

    RewriteEngine on    RewriteCond %{REQUEST_FILENAME} !-d    RewriteCond %{REQUEST_FILENAME} !-f    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]求高手指點,把問題解決

回複內容:

自己搞了個簡單的php 架構,使用 "?var=val1&var2=val2" 形式的url 視圖載入都正常,
apache下為了美化url, 使用 .htaccess規則 隱藏index.php使用pathinfo 格式的url,頁面和資料都可以載入,但是 css、js檔案路徑卻變成了 pathinfo 格式的url/public/css/style.css了,導致css、js載入路徑出錯了。求一個正確的 .htaccess規則,讓樣式檔案正確載入。

目前的出錯情況:
項目架構放在 網站根目錄下的capframework檔案夾下 ,
使用 http://127.0.0.1/capframework/ 訪問一切ok,css載入ok,
css url 為:http://127.0.0.1/capframework/public/css/captain.css
當使用 http://127.0.0.1/capframework/article/list/tag/php訪問時,css、js就出問題,路徑變成了
http://127.0.0.1/capframework/article/list/tag/public/css/captain.css

當前使用的規則為:

    RewriteEngine on    RewriteCond %{REQUEST_FILENAME} !-d    RewriteCond %{REQUEST_FILENAME} !-f    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]求高手指點,把問題解決

這不是.htaccess的問題啊,你代碼裡面對css的引用用了類似這種形式吧:

那麼當你的頁面路徑為http://127.0.0.1/capframework/article/list/tag/php時,瀏覽器認為的css路徑就變成在目前的目錄下,拼接上public/css/captain.css,所以就變成http://127.0.0.1/capframework/article/list/tag/public/css/captain.css

所以你需要這樣

但是這樣仍然不對,因為,瀏覽器就會認為css路勁是http://127.0.0.1/public/css/captain.css

因此,你還需要手動加入根目錄

然而,一般根目錄不是個確定的東西,所以需要變數化,所有的php架構幾乎都提供這麼個變數。

目測不是.ht檔案的錯誤,印象中:當連結對應的檔案存在時,是有限返迴文件的,當無法通過連結直接存取檔案時,才會去匹配相關規則。

初始設定檔案應該有WEB_ROOT吧 在模板檔案中這麼寫
{WEB_ROOT} / public/css/captain.css 應該就OK了吧

css路徑聲明的不對,方法1,在

裡面聲明就是基礎路徑設定,方法2,在引用css時使用絕對路徑,如

$baseUrl應該是http://127.0.0.1/capframework/public/
此外,通常為了安全考慮,.htaccess應該是放在public下面的,如果你配置虛擬機器主機的話也應該指向/capframework/public而不是/capframework,這樣能避免暴露其他的代碼。當然,index.php也應該處於public下面。

樓上正解!!在載入的靜態檔案路徑前加 ' / ' 即可。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.