PHP Mod_rewrite

时间:2012-03-23 08:37:39

标签: 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

这意味着我必须做错事......

任何人都可以帮助我吗?我会很感激任何提示。

3 个答案:

答案 0 :(得分:1)

在HTML中输出网址时,您必须更改网址,使其达到您想要的格式(/ user / andy)。

mod_rewrite会将/ user / andy重写为main.php吗?...而不是相反。

答案 1 :(得分:1)

我的结果是什么意思?

mod_rewrite不会更改源代码中的现有链接。导航到website.com/user/andy,您应该会看到它有效。

答案 2 :(得分:1)

如果你想要

  • 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个规则:

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。

每当您更改网站的网址方案时,您都应该处理现有链接。因此,第一条规则是必需的/一个好主意。但是,在使用自己的应用程序时,不应该使用第一条规则。如果您自己的应用程序生成了profile.php的链接?user = me - 更改您的应用程序代码。