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



我不擅长使用htaccess文件,并且在谷歌上找不到任何适合我的东西。

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

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

这是我的索引.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;
}

当前访问:

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

再加一个!

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 标记以使用区分大小写(。
新代码也只接受字母 a-Z 和数字、-_。这应该可以防止一些注射。将([a-zA-Z0-9-_]+)替换为([^/.]+)以接受任何内容。
新代码也只接受配置文件参数中的数字。

最新更新