PHP和htaccess重定向:将yoursite.com/user.php?username=xyz重写为yoursite.com/xyz

时间:2009-07-16 09:31:12

标签: .htaccess mod-rewrite

假设我想使用.htaccess重写以下内容。

/user.php?username=xyz重写为/xyz

我会用:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1

问题是一旦完成,我如何在其他链接中访问用户名?

所以/mike/details.php

如何将username('mike')的值自动添加到URL中,如下所示: /username/details.php?username=mike

我需要在.htaccess中更改才能获得此值?或者我必须在PHP脚本中执行此操作来解析URL?

由于

3 个答案:

答案 0 :(得分:1)

试试这个:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ user.php?username=$1 [L,QSA]

答案 1 :(得分:0)

我认为将用户名作为查询字符串参数传递不是一个好的解决方案。

因此,将用户数据存储在会话(服务器端)中,让会话机制通过会话ID检索它(通过cookie或GET传递,无所谓)

您的重写规则仍然可以重定向到user.php设置username参数,但是user.php会将用户名及其数据存储在会话中......从现在起每个其他PHP脚本访问$ _SESSION容器(调用session_start())可以轻松检索所需的每个用户相关数据

我的2美分:)

答案 2 :(得分:0)

这将与网站中的其他规则重叠,并以anytext开头 比如说^abc