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