0

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

当我输入 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 离线开发的,所以这也不好。

还有其他解决方案吗?

非常感谢你。

4

1 回答 1

0

您可能应该使用baseHTML 中可用的标签(将其放在<head></head>标签之间):

<base href="yoursiteroot" />

换句话说,是这样的:

<base href="/mywebsite" />

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

于 2013-07-15T14:28:06.287 回答