我不擅长使用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]
答案 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参数中的数字。