像facebook这样的Mod_rewrite网站

时间:2013-07-15 14:25:31

标签: php redirect mod-rewrite

我第一次使用mod_rewrite以创建类似于facebook的网站。

Whener我输入mywebsite.com/user.name,mod_rewrite将我重定向到mywebsite.com/hotsite/index/php,在那里,我使用一个小的php从url获取用户名并从中获取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离线开发,这也不会很好。

还有其他解决方案吗?

非常感谢你。

1 个答案:

答案 0 :(得分:0)

您应该使用HTML中提供的base标记(将其放在<head></head>标记之间):

<base href="yoursiteroot" />

换句话说,就像这样:

<base href="/mywebsite" />

但是,这需要根据您指定的路径调整相对链接。 : - )