Mod_rewrite网站像Facebook

问题描述:

我第一次使用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多。

你或许应该使用HTML提供的base标签(把它放在<head></head>标签之间):

<base href="yoursiteroot" /> 

换句话说,这样的事情:

<base href="/mywebsite" /> 

然而,这需要您的相对链接将根据您指定的路径进行调整。 :-)

+0

我觉得那样做了!我添加了基本标签给我所有的htmls execpt索引,它工作。 谢谢! – DanielFox