[英].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.