2011-01-06 93 views
0

我正在嘗試創建一些Apache重寫規則,以便能夠路由URI請求,例如,使用Apache重寫規則時的相對文件路徑問題

http://mydomain.com/articles/example
http://mydomain.com/index.php?site=articles&page=example

到目前爲止,我已經得到了這是什麼:

RewriteRule ^/?([a-zA-Z_]+)/([a-zA-Z0-9_]+).html$ index.php?site=$1&page=$2 [L]
RewriteRule ^/?([a-zA-Z_]+)/([a-zA-Z0-9_]+)$ index.php?site=$1&page=$2 [L]

由於我使用相對文件路徑無處不在我的index.php,用於樣式表,腳本,圖像等,我面臨着錯誤解析絕對文件路徑的問題。

例如,當我在根,http://mydomain.com/http://mydomain.com/articles,所有相對圖像路徑正確解析 - images/logo.jpg分別變爲http://mydomain.com/images/logo.jpghtdocs/mydomain/images/logo.jpg

當我點擊我網站上的一個鏈接時,例如http://mydomain.com/articles/example,Apache(或瀏覽器?)假設我所有的圖像都位於這裏http://mydomain.com/articles/images/ - 很顯然,這條路並不存在。

因此,這裏是我的問題:

1.是否有可能解決這一問題沒有改變我所有的相對文件路徑,以絕對的嗎?

我可以使用根/作爲我的實際Web服務器上的所有路徑,因爲我的域名有利地被鏈接。
mydomain.com鏈接到/html/mydomain我的Web服務器上 - /解析爲mydomain.com/,但我的個人計算機上我運行XAMPP和/解析爲htdocs/ - 但它應該下定決心htdocs/mydomain/只是因爲我在htdocs

持有幾個網站在將index.php更新到我的Web服務器時,絕對文件路徑非常糟糕,因爲我必須自動系統地替換路徑聲明 - 不僅在index.php中,而且在樣式表和腳本中也是如此。

2.我應該在個人計算機上創建一個靜態DNS條目以適應我的Web服務器嗎?

3.什麼是最常用的方法?

預先感謝您!

真誠,塞巴斯蒂安

回答

1

我想通了我自己,通過編輯Windows的hosts文件和Apache的httpd-vhosts.conf文件。

1。添加一個新的靜態DNS條目%SystemRoot%\system32\drivers\etc\hosts

127.0.0.1 www.mydomain.local

2.追加新的虛擬主機條目%ApacheInstallDir%\conf\extra\httpd-vhosts.conf

<Directory "E:\htdocs">
Order Deny,Allow
Allow from all
</Directory>

NameVirtualHost 127.0.0.1

<VirtualHost 127.0.0.1>
DocumentRoot "E:\htdocs"
ServerName localhost
</VirtualHost>

<VirtualHost 127.0.0.1>
DocumentRoot "E:\htdocs\mydomain"
ServerName www.mydomain.local
</VirtualHost>

現在http://www.mydomain.local導致htdocs/mydomain直接

3.通過簡單地在他們面前的一個/「生根」他們,例如改變我的index.php所有的相對路徑和鏈接<img src="/images/logo.jpg" />

我也設法在Dreamweaver中設置了一個站點,所以我能夠正確使用設計和實時視圖。