【问题标题】:How can I rewrite this url?我怎样才能重写这个网址?
【发布时间】:2015-12-21 10:09:09
【问题描述】:

这是我的登录脚本。我正在将用户重定向到/sws/index.php?user=$user,但我想使用.htaccess 将他们重定向到/sws/index/user/$user

$user 变量代表用户的用户名!

我尝试了许多不同的教程来尝试重写 URL,但它们都不起作用!任何人都可以建议一个可以在这里工作的.htaccess 脚本吗? 此外,当用户登录时,我希望自动重写 URL。

<?php

if (isset($_POST['login'])) {

    include "functions/password.php";

    $email = $_POST['email'];
    $password = $_POST['password'];

    $result = mysqli_query($connect, "SELECT * FROM users0 WHERE email='$email'");
    $row = mysqli_fetch_array($result, MYSQLI_BOTH);

    if (password_verify($password, $row['password'])) {
        session_start();

        $_SESSION["id"] = $row['id'];
        $_SESSION["first_name"] = $row['first_name'];
        $_SESSION["last_name"] = $row['last_name'];
        $_SESSION["email"] = $row['email'];
        $_SESSION["company"] = $row['company'];
        $user = $_SESSION['first_name'] . $_SESSION['last_name'];

        header('Location: index.php?user=' . $user);
    } else {
        header('Location: index.php?error');
    }
}

?>

【问题讨论】:

    标签: php .htaccess url url-rewriting


    【解决方案1】:

    试试这个:

    RewriteRule ^index/user/(.*)$ index.php?user=$1 [L]
    

    【讨论】:

      【解决方案2】:

      下面的 Apache 重定向将执行此操作(即使 URL 也有更多参数,例如:index.php?user=thanga&arg1=test)。

      RewriteRule ^index.php\?user\=([A-Za-z_0-9]*)(.*)$ index/user/$1$2 [R]
      

      【讨论】:

        【解决方案3】:

        我正在将用户重定向到/sws/index.php?user=$user,但我想使用.htaccess 将他们重定向到/sws/index/user/$user

        这不是您在.htaccess 中应该做的事情。您的应用程序应将它们重定向到 /sws/index/user/$user,然后您使用 .htaccess (mod_rewrite) 将请求内部重写/sws/index.php?user=$user(真实 URL)。 (如果您在 .htaccess 中执行此操作,那么用户将体验到多次/不必要的重定向。)

        您需要在 .htaccess 中执行此操作的唯一情况是该 URL 先前已被搜索引擎索引或链接到。但由于这是您的登录脚本的一部分,因此 可能没有必要。 (?)

        因此,将您的脚本重定向更改为:

        header('Location: /sws/index/user/'.$user);
        

        然后,在文档根目录的.htaccess 中,重写将请求返回到完整的 URL(类似于 devpro 已经发布的内容):

        RewriteEngine On
        RewriteRule ^sws/index/user/(.*)$ sws/index.php?user=$1 [L]
        

        【讨论】:

          猜你喜欢
          • 2021-08-16
          • 2016-01-31
          • 1970-01-01
          • 2018-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多