2016-04-29 74 views
3

我想用本地XAMPP從C:\ xampp \ htdocs \ abc 本地運行一個Fat Free PHP項目我的問題是我的CSS,圖像或鏈接都不工作。我添加了一個.htaccess文件:如何在本地使用XAMPP設置F3?

RewriteEngine On 
RewriteBase /abc/ 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* /abc/index.php [L,QSA] 

它似乎有點幫助我的index.php加載但沒有任何的CSS或圖像加載。另外,當我點擊任何鏈接時,我會得到404s,並且URL不會路由到我的/abc目錄。

我已經試過無數RewriteRules和RewriteConds沒有運氣。

此外,一切工作正常生產,所以我想不改變結構。

任何幫助將不勝感激,謝謝。

+1

+1我知道這可能與HTML'<基本href =「」>'標籤來解決,但我也很好奇,如果有一個純htaccess的解決方案。 –

+0

如果''可以修復它,那麼就不需要重寫魔術了。 – anubhava

+0

可悲的是這不適合我。它不會更改請求URL。 – jrquick

回答

3

嘗試用這種.htaccess

RewriteEngine On 
RewriteBase /abc/ 

# skip all files and directories from rewrite rules below 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule (.+\.(?:gif|png|jpe?g|css))$ /abc/$1 [NC,L] 
RewriteRule .* /abc/index.php [L] 
0

看起來像是有路徑問題。

從您的意見,我認爲你的資產和鏈接這樣寫的:

<link rel="stylesheet" href="/bootstrap.css" /> 
<img src="/mypic.png"/> 
<a href="/what/ever.html">click</a> 

這些鏈接絕對(注意前導/)。這意味着它們指向服務器根,所以:

  • bootstrap.css解析爲myserver.tld/bootstrap.css
  • mypic.png解析爲myserver.tld/mypic.png

他們在您的網站上製作的工作可能是因爲項目位於服務器根目錄下。

但是在您的本地服務器上,所有內容都從/轉換爲/abc/,導致鏈接分辨率錯誤。所以,你有兩種解決方案:

解決方案1個

Preprend所有與BASE鏈接。如果您使用的框架模板引擎,將給予:

<link rel="stylesheet" href="{{ @BASE }}/bootstrap.css" /> 
<img src="{{ @BASE }}/mypic.png"/> 
<a href="{{ @BASE }}/what/ever.html">click</a> 

解決方案2

通知各個環節,應通過添加<head>部分內<base>標籤相對決心/abc/瀏覽器:

<base href="http://myserver.tld/abc/"> 

<base href="/abc/"> 

注意:尾部斜線很重要。整個字符串被視爲所有鏈接的前綴。

備註

那些2個解決方案是不等價的100%時,由於第二溶液影響錨鏈接。事實上,<a href="#foo">點:

  • 與第一溶液
  • 基礎URI與第二溶液(即/abc/#foo)當前頁面
0

我的建議是建立一個虛擬主機。它會影響其他的Apache配置文件,但我假設你只是想在本地重新創建環境(在這裏你有完全的自主權和定製能力),所以應用程序代碼不需要改變。

打開Windows C:\WINDOWS\system32\drivers\etc\hosts文件中的任何文本編輯器,但管理權限,並添加以下行:

127.0.0.1 localcopy.tld 

這將告訴該主機應該由本地服務器處理系統。

現在找到您的hhtpd-vhosts.conf(它應該在C:\xampp\apache\conf\extra\目錄中)。從符合

NameVirtualHost *.80 

刪除hashmark並插入以下行:

<VirtualHost *:80> 
    DocumentRoot C:/xampp/htdocs/abc 
    ServerName localcopy.tld 
</VirtualHost> 

這將告訴Apache,當請求處理localcopy.tld請求時,它會發現在C:/xampp/htdocs/abc目錄中的文件。

最後,您需要修改Apache主配置文件以允許虛擬主機。 在文本編輯器中打開Apache主配置文件httpd.conf。該文件位於C:\xampp\apache\conf\。向下滾動到最後的補充配置部分,並找到以下部分(在第500行左右)。刪除哈希標記的評論行:

Include conf/extra/httpd-vhosts.conf 

這應該做到這一點。

更深入的解釋is available here

所有這些將允許您訪問您的本地副本http://localcopy.tld

相關問題