【问题标题】:PHP and htaccess redirection: Rewriting yoursite.com/user.php?username=xyz to yoursite.com/xyzPHP 和 htaccess 重定向:将 yoursite.com/user.php?username=xyz 重写为 yoursite.com/xyz
【发布时间】:2009-07-16 09:31:11
【问题描述】:

假设我想使用 .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

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

我需要在 .htaccess 中进行哪些更改才能获得此值?还是我必须在 PHP 脚本中解析 URL?

谢谢

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    试试这个:

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

    【讨论】:

      【解决方案2】:

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

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

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

      我的 2 美分 :)

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2013-02-14
          • 1970-01-01
          • 2014-10-25
          • 1970-01-01
          • 2013-08-27
          • 1970-01-01
          • 2021-12-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多