代码之家  ›  专栏  ›  技术社区  ›  Scott

php和htaccess重定向:重写site.com/user.php?username=xyz到yoursite.com/xyz

  •  2
  • Scott  · 技术社区  · 17 年前

    假设我想使用.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 回复  |  直到 17 年前
        1
  •  1
  •   manoelhc    16 年前

    试试这个:

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

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

    因此,将用户数据存储在会话(服务器端)中,并让会话机制通过会话id(通过cookies或get传递,这无关紧要)来检索它。

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

    我的2美分:)

        3
  •  0
  •   René Höhle oasisfleeting    13 年前

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