2013-07-15 71 views
0

我第一次使用mod_rewrite爲了創建一個類似Facebook的網站。Mod_rewrite網站像Facebook

Whener我鍵入mywebsite.com/user.name,mod_rewrite將我重定向到mywebsite.com/hotsite/index/php,在那裏,我使用一點PHP從url獲取用戶名並從userId獲取userId它。

然後,我有其他的領域,如mywebsite.com/user.name/diary,mywebsite.com/user.name/contact,等等...

這是所有與此代碼中運作良好我的.htaccess:

Options +FollowSymlinks 
RewriteEngine on 
RewriteBase /mywebsite 

# ————————————————————————- 
# > URL REWRITING 
# ————————————————————————- 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.*)/diario$ hotsite/diary.php 
RewriteRule ^(.*)/recados$ hotsite/messages.php 
RewriteRule ^(.*)/fotos$ hotsite/photos.php 
RewriteRule ^(.*)/videos$ hotsite/videos.php 
RewriteRule ^(.*)/contato$ hotsite/contact.php 
RewriteRule ^([a-z0-9._\-]+)$ hotsite/index.php [L] 

我遇到的問題是與外部文件(CSS,圖像,背景...)的路徑。 由於我的瀏覽器認爲我在「website.com」,所以我必須在所有路徑中添加「hotsite /」。這適用於我在用戶主頁時的情況,比如「mywebsite.com/user.name」。但是,如果我去「mywebsite.com/user.name/diary」瀏覽器認爲我在另一個文件夾,然後我必須添加「../hotsite」爲了路徑工作。

我可以在所有路徑中做一個IF來檢查我是否在索引處,但是這會非常笨拙。 我也可以把絕對路徑放在evertyhing中,但是因爲我是用apache離線開發的,所以這也不會很好。

其他解決方案?

謝謝你vey多。

回答

0

你或許應該使用HTML提供的base標籤(把它放在<head></head>標籤之間):

<base href="yoursiteroot" /> 

換句話說,這樣的事情:

<base href="/mywebsite" /> 

然而,這需要您的相對鏈接將根據您指定的路徑進行調整。 :-)

+0

我覺得那樣做了!我添加了基本標籤給我所有的htmls execpt索引,它工作。 謝謝! – DanielFox