我是 mod_rewrite 新手,我正在尝试将我的网址从以下位置转换:
website.com/profile.php?user=andy
以下内容:
website.com/user/andy
这是我的以下代码:
RewriteEngine On
RewriteRule ^user/([A-Za-z0-9]+)/?$ profile.php?user=$1 [NC,L]
我进行了广泛的研究,这似乎是正确的方法,但它没有重定向到我想要的地方,它只是重定向到这个:
http://website.com/profile.php?user=andy
这意味着我一定做错了什么......
有人可以帮我吗?如果有任何提示,我将不胜感激。
最佳答案
如果你愿意
http://website.com/profile.php?user=andy
->301->http://website.com/user/andy
<http://website.com/user/andy
表示http://website.com/profile.php?user=andy
它们是 2 个不同的东西,您需要 2 个规则:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^user=([A-Za-z0-9]+)
RewriteRule ^profile.php /user/%1? [R=301,L]
RewriteRule ^user/([A-Za-z0-9]+)/?$ profile.php?a=b&user=$1 [L]
第一个将 301(永久移动)重定向到漂亮的 url。 第二个将允许您的应用程序理解漂亮的 url。
每当您更改站点的 URL 方案时,您都应该注意现有的链接。因此,第一条规则是必需的/一个好主意。但是,在使用您自己的应用程序时,您不需要第一条规则。如果您自己的应用程序正在生成指向 profile.php?user=me 的链接 - 更改您的应用程序代码。
关于PHP Mod_rewrite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9836110/