-1

我有一个动态网址为 (www.abc.com/profile.php?u=me) 的站点,其中 GET 变量“u”指向当前查看的用户(即我)。我希望重写后的 URL 看起来像 www.abc.com/me。当我使用 URL 生成器时,我主要得到以下内容:

RewriteRule profile/u/(.*)/ profile.php?u=$1
RewriteRule profile/u/(.*) profile.php?u=$1  

它指向 www.abc.com/profile/u/me 并且此页面也不包含 css 文件。我需要类似 www.abc.com/me 的东西,其中还包括页面的 css 文件。

4

1 回答 1

0

试试这个规则:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ profile.php?u=$1 [NC,L]

这将重写 example.com/userexample.com/profile.php?u=user.

为什么没有加载css文件?

这是因为您的相对 URI 的基数已更改。原来,base 是/当页面为 时/profile.php?u=user,浏览器正确填写与/base 的相对链接。但是,当浏览器进入一个像/userbase 那样的页面时/user/,它会尝试将其附加到所有相对 URL 的前面,因此它们都不会加载。

解决方案

您可以将链接设为绝对链接,也可以更改页面标题中的 URI 基础(在<head> </head>标签之间):

<base href="/">
于 2015-07-25T03:16:21.123 回答