我怎么能得到我的htaccess使我的网址看起来像foo.bar/user我有这个片段

时间:2011-03-11 19:22:34

标签: php .htaccess

我一直试图让我的网址更加用户友好,我已经想出了这个设置

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ userpage?user=$1 [NC,L]

我已将此添加到.htaccess,但我现在对如何访问这些网址感到困惑。

用户登录时,在我的index.php

尝试使用

重定向用户
userpage.php?user=s2xi

但是网址解析为www.foo.bar/userpage.php?user=s2xi而不是www.foo.bar/s2xi

并尝试检查用户是否存在(是否有更好的方法?)

if($_GET['user'] != $_SESSION['username']){
    header("Location: no_user.php");
}else{
    //load page
}

我在我的网站上使用Smarty模板引擎,我在属于成员文件的目录中有'主题'

www.foo.bar/users/s2xi/themes

但我希望www.foo.bar/s2xi指向其他人可查看的个人资料页面,而不是他们的帐户页面。

1 个答案:

答案 0 :(得分:0)

您错过了.php中的RewriteRule,如果是逐字的话 - 例如userpage? => userpage.php?

但是,除非您使用框架来帮助区分路线,否则您将遇到一些问题。如果您切换到为用户页面使用单独的URI格式(例如/user/foo),则不会发生冲突;但目前的情况是,使用.htaccess以该格式重写您的网址可能会导致您应用的许多其他部分出现问题。

要使用单独的URI格式执行此操作,请将最后一行.htaccess行(RewriteRule)更改为:

RewriteRule ^user/(.+)/?$ userpage.php?user=$1 [NC,L]

可能还想考虑添加QSA