我是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
这意味着我必须做错事......
任何人都可以帮助我吗?我会很感激任何提示。
答案 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 - 更改您的应用程序代码。