2

我正在使用 htaccess 清理 URL,以下是个人资料页面的规则

RewriteRule ^([0-9a-z]+)$ profile.php?user=$1

但我有其他页面,如关注者,关注登录用户,他们可以在/followers页面上看到他们的关注者,规则是

RewriteRule ^following$ follow.php?follow=following
RewriteRule ^followers$ follow.php?follow=followers

但是当我去的时候,/followers我被重定向到profile.php(上面的第一条规则),正如你在第一条规则中看到的那样,域名localhost/text_that_comes_here转到之后的任何内容profile.php

什么可能是解决方案,以便我/followers和其他页面将被正确重定向。

4

1 回答 1

1

您应该将更具体的规则放在更通用的规则之前。
在这种情况下,规则^following$^followers$^([0-9a-z]+)$...更具体,
这将导致“following”和“followers”被第一条规则捕获^([0-9a-z]+)$,因此重定向到profile.php

将您的 .htaccess 重新排序如下应该可以解决问题:

RewriteRule ^following$ follow.php?follow=following
RewriteRule ^followers$ follow.php?follow=followers
RewriteRule ^([0-9a-z]+)$ profile.php?user=$1


编辑:为了回答您的评论,您可以使用以下方法以编程方式进行操作:
*但是,这是一种 hack,我不会将其用作永久修复。

由于它将重定向到 profile.php?user=following(或profile.php?user=followers),您可以做的是在profile.php页面的开头添加一个条件并检查参数$_GET["user"]="following"(或“关注者”)是否。就像是:

if ($_GET["user"]="following" || $_GET["user"]="followers") {
    $_GET["follow"]=$_GET["user"]; //set the parameter required in “follow.php”
    include("follow.php");
    exit;
}

这意味着您将无法拥有任何名为followingor 的用户follower,这无论如何都不应该发生……但仍然如此。

于 2013-07-25T14:30:50.453 回答