我一直试图让我的网址更加用户友好,我已经想出了这个设置
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指向其他人可查看的个人资料页面,而不是他们的帐户页面。
答案 0 :(得分:0)
您错过了.php
中的RewriteRule
,如果是逐字的话 - 例如userpage?
=> userpage.php?
。
但是,除非您使用框架来帮助区分路线,否则您将遇到一些问题。如果您切换到为用户页面使用单独的URI格式(例如/user/foo
),则不会发生冲突;但目前的情况是,使用.htaccess以该格式重写您的网址可能会导致您应用的许多其他部分出现问题。
要使用单独的URI格式执行此操作,请将最后一行.htaccess行(RewriteRule
)更改为:
RewriteRule ^user/(.+)/?$ userpage.php?user=$1 [NC,L]
可能还想考虑添加QSA
。