像Instagram个人资料一样重写URL

时间:2020-04-16 12:47:53

标签: .htaccess mod-rewrite url-rewriting

我正在尝试使用Instagram或Facebook这样独特的代码重写URL。

示例:facebook.com/joe

我的网址是这样的:website.com/user.php?username=joe

我尝试在.htaccess中使用此规则:

RewriteEngine On
RewriteRule ^([a-z]+)$ user.php?username=$1 [L]

但是它不起作用,它会在/user.php上重定向。

如果我使用此规则,它将起作用:

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

但是结果是website.com/u/joe,我更喜欢没有u

有什么主意吗?

1 个答案:

答案 0 :(得分:1)

将此添加到您的网络根.htaccess目录中的/

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ user.php?username=$1 [NC,L]

模式.*中的^(.*)$/anything匹配,并且括号有助于将任何内容部分捕获为替换中使用的$1变量网址为user.php?username=$1

如果需要多个参数,只需在&%{QUERY_STRING}之后添加$1即可进行分隔,并将其添加到查询字符串的末尾。 例如:如果您通过website.com/joe?age=31,则结果将为website.com/user.php?username=joe&age=31

最后,标志NC仅使规则不区分大小写,因此它也匹配/Joe/JOE