繁体   English   中英

.htaccess 用 GET 变量重写

[英].htaccess rewrite with GET variables

我正在尝试使用 .htaccess 创建这样的 url ... www.example.com/user/david

我现在拥有的是这个www.example.com/user?username=david

当我做类似的事情时效果很好

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

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

但是我的 php 代码错了。

if(isset($_GET["username"]))
{
    $stmt = $mysqli->prepare("SELECT * FROM campus_users WHERE campus_name = ?");
    $stmt->bind_param("s", $campus_name );
    $campus_name = trim($_GET["username"]);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($result->num_rows == 1) {
        $row = $result->fetch_array(MYSQLI_ASSOC);
        //displaying users rows
    } else {
        header("location: blank-page");
      exit();
    }
} else {
  header("location: home.php");
  exit();
}

但是当我像这样输入 url www.example.com/user?username=david时,它运行良好......

问题是我想要一个看起来很漂亮的 url,我猜是因为我的 php 而无法正常工作。

请帮我。 提前致谢。

如果您的带有查询字符串的 URL 工作正常,那么这很可能意味着您的.htaccess规则不起作用,通常我们会为用户提供用户友好的 URL,在您的情况下它应该是www.example.com/user/david并且在内部它应该路由到www.example.com/user.php?username=david 请尝试遵循.htaccess文件中的规则。

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

注意:如果可能并且您不在生产系统上,那么您也可以尝试重新启动 Apache 服务,虽然这不是必需的,但有时可能需要。 也可以使用上面提到的用户友好的 URL 在浏览器中确保在点击它之前清除浏览器缓存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM