使用 htaccess 重写 url,隐藏查询字符串

时间:2021-07-30 15:13:53

例如我们有如下 URL:

http://example.com/users.php?name=tania

但是我们想要让 URL 变成如下:

http://example.com/users/tania

我们可以通过修改 .htaccess:

.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?users/(.*?)/?$ /users.php?name=$ [L] RewriteCond %{THE_REQUEST} ^[A-Z]{,}\ /users\.php\?name=([^\&\ ]+)
RewriteRule ^/?users\.php$ /users/%? [L,R=]

我们仍然可以获取到 URL 查询参数.

users.php
<?php

echo $_SERVER['REQUEST_URI'] . '<br>';

print_r($_GET);
/users/tania Array ( [name] => tania )