使用查询字符串重定向URL?

时间:2018-10-04 10:34:23

标签: php .htaccess

我不擅长使用htaccess文件,并且在Google上找不到对我有用的任何东西。

当前,我的htaccess文件可以从index.php?page=$1/重定向我,其中$ 1是页面名称,例如/page/profile

但是我想通过打开/page/profile/1/page/profile?id=1来在URL后传递查询以查看其他用户的个人资料。

这是我的index.php文件:

if (isset($_GET['page']))
switch ($_GET['page'])
{
    case 'home':
        require_once("includes/header.php");
        require_once("pages/index.php");
        require_once("includes/footer.php");
        break;
    case 'profile':
        require_once("includes/header.php");
        require_once("pages/profile.php");
        require_once("includes/footer.php");    
        break;
    case 'logout':
        require_once("pages/logout.php");
        break;
    default:
        break;
}

当前的htaccess:

RewriteEngine on
RewriteRule ^page/([^/\.]+)/?$ index.php?page=$1 [L]

1 个答案:

答案 0 :(得分:0)

再添加一个!

RewriteEngine on
RewriteRule ^page/([^/\.]+)/?$ index.php?page=$1 [L]
RewriteRule ^page/([^/\.]+)/([^/\.]+)/?$ index.php?page=$1&profile=$2 [L]

这应该做到。

编辑:
您应该改用它:

RewriteEngine on
RewriteRule ^page/([a-zA-Z0-9-_]+)/?$ index.php?page=$1 [NC,L]
RewriteRule ^page/profile/([0-9]+)/?$ index.php?page=profile&profile=$1 [NC,L]

新代码将仅接受profile页上的参数。并且NC标签用于表示不区分大小写的系统,因此在访问/proFile而不是profile时不会生成404(删除NC标签以使用区分大小写)。 br /> 新代码还只接受字母a-Z和数字-_。这样可以防止注射。将([a-zA-Z0-9-_]+)替换为([^/\.]+),以接受任何内容。
新代码还只接受profile参数中的数字。