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" />
然而,这需要您的相对链接将根据您指定的路径进行调整。 :-)
我觉得那样做了!我添加了基本标签给我所有的htmls execpt索引,它工作。 谢谢! – DanielFox