簡體   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