我有一个原始的PHP网站,其中动态生成了用户配置文件。生成页面后,页面的URL为:
https://example.org/contributor-profile.php?id=1002&%20user=abc
我在.htaccess文件中使用了mod_rewrite。代码是:
RewriteEngine on
RewriteRule ^abc/?$ /contributor-profile.php?id=1002&%20user=abc [NC,L]
此后,我转到此链接[example.org/abc],并显示了该动态生成的网页。但是,当我从另一个网页单击此链接时,看到的是旧网址。如何解决此问题?更改PHP代码?
然后,此规则仅适用于abc用户的URL,不适用于每个用户的URL。如何解决这个问题?
答案 0 :(得分:0)
您可能需要的重写规则可能看起来像这样:
RewriteEngine on
RewriteRule ^/profile/(.*)$ /contributor-profile.php?id=1002&user=$1 [NC,L]
RewriteRules接受正则表达式以匹配URL(如果您不知道这是什么,则应查找该正则表达式)。 (.*)
定义了一个匹配组,您以后可以在重写的URL中将其重用为$1
,这意味着第一个匹配组。
在您的PHP代码中,您不应再将URL指向/contributor-profile.php?...
,而应将它们直接指向/profile/username
,这样将具有预期的效果并且对所有用户有效。
此解决方案必须使用profile/
子路径来防止重定向循环。