假设我想使用.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?
由于
答案 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