每个动态链接的mod_rewrite

时间:2019-02-22 04:27:23

标签: php .htaccess mod-rewrite

我有一个原始的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。如何解决这个问题?

1 个答案:

答案 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/子路径来防止重定向循环。