PHP Mod_rewrite

标签 php mod-rewrite

我是 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/

相关文章:

php - 如何在 PHP 中从 MySQL 中获取表

php - FOSElasticaBundle一起共享映射类型

php - 如何上传带有文字的照片?

php - CentOS 上的 "End of script output before headers",但在其他 LAMP 堆栈上工作

php - Yii 404 错误,urlmanager showscript 为 false

mod-rewrite - 将没有 www 的 URL 重定向到 www

php - 在 Woocommerce 的客户运输部分下向管理用户添加其他字段

apache - RewriteEngine 产生递归,尽管指定了 NS (nosubreq) - 为什么?

.htaccess mod_rewrite 域之间的重定向

.htaccess - SEO 友好的 URL 不起作用