用.htaccess重写/用户profile.php?u = user

时间:2015-07-24 19:44:36

标签: apache .htaccess url mod-rewrite rewriting

我有一个带有动态网址的网站(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文件。

1 个答案:

答案 0 :(得分:0)

尝试此规则:

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

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

为什么css文件没有加载?

这是因为您的相对URI的基数已更改。最初,当页面为/时,基数为/profile.php?u=user,浏览器会正确填充/基础的相对链接。但是当浏览器转到/user这样的页面时,基础突然变为/user/,它会尝试将其附加到所有相对URL之前,因此它们都不会加载。

<强>解决方案

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

<base href="/">