如何使用.htaccess隐藏页面扩展名和$ _GET值?

时间:2019-08-30 07:12:38

标签: php .htaccess

我要隐藏页面扩展名和$_GET

http://localhost/dice_mpc/members.php?as=c4ca4238a0b923820dcc509a6f75849b
http://localhost/dice_mpc/home.php?as=c4ca4238a0b923820dcc509a6f75849b
http://localhost/dice_mpc/profile.php?as=c4ca4238a0b923820dcc509a6f75849b

预期结果:

http://localhost/dice_mpc/members/c4ca4238a0b923820dcc509a6f75849b

1 个答案:

答案 0 :(得分:1)

我找不到很好的副本(对此有很多问题),而且心情很好,所以我们开始:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^dice_mpc/(.+)/(.+)$ dice_mpc/$1.php?as=$2 [QSA,L]
</IfModule>

详细信息:

  • RewriteCond %{REQUEST_FILENAME} !-d将阻止您访问现有文件夹的重写
  • RewriteCond %{REQUEST_FILENAME} !-f将阻止您访问现有文件的重写
  • RewriteRule ^dice_mpc/(.+)/(.+)$ dice_mpc/$1.php?as=$2 [QSA,L]将仅重写格式为{domain}/dice_mpc/{A}/{B}的URL,因此如果{B}不存在,它将不会重定向。 {A}将转换为{A}.php{B}将转换为?as={B}
  • QSA表示将保留查询字符串({domain}/dice_mpc/{A}/{B}?test=1将被重写为{domain}/dice_mpc/{A}.php?as={B}&test=1),而L意味着将在此处停止重写
  • 请不要忘记将链接更改为新格式,并且请注意,如果您在.htaccess中有其他重写规则,则它可能会相互作用。

如果这不是您想要的,请编辑问题本身。