每个动态链接的mod_rewrite

问题描述 投票:-1回答:1

我有一个原始的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]并显示动态生成的网页。但是当我从其他网页点击此链接时,我看到了旧的URL。如何解决这个问题?我是否应该更改PHP代码?

然后此规则仅适用于abc用户的URL而不是每个用户的URL。如何解决这个问题?

php .htaccess mod-rewrite
1个回答
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/子路径是此解决方案防止重定向循环所必需的。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.