gpt4 book ai didi

php - 如何停止使用 htaccess 规则直接执行 php 页面?

转载 作者:可可西里 更新时间:2023-11-01 00:18:08 26 4
gpt4 key购买 nike

在我的 .htaccess 文件中,我定义了以下规则,使我的注册页面 URL 为 http://example.com/register/

RewriteRule register/ /register.php

上述规则完全没问题,但我可以从 http://example.com/register/ 以及 http://example.com/register 访问我的注册页面.php

我不希望用户能够从 http://example.com/register.php URL 访问 URL,是否有任何我可以在 .htaccess 中定义的规则停止执行 register.php URL 或简单地将任何直接 register.php 请求重定向到/register/

最佳答案

如果您这样做是为了避免获得指向相同内容的多个链接,您可以简单地不要在页面的任何地方使用“register.php”。我认为没有搜索引擎会“猜测”某种文件类型,如果没有安全问题,您就安全了,因为在我看来,也没有用户会链接到该文件。但是,如果您想确定只需通过 .htaccess 中的一行通过 index.php 重新路由所有功能,该行应放在 www-root 目录中:

RewriteEngine on
RewriteRule ^(.*?)$ index.php?file=$1

在您的 index.php 中,您可以通过分解并检查 $_GET["file"] 参数来简单地选择要调用的函数/文件。要 100% 确定没有人可以直接访问您的 register.php 文件,只需将它(以及您的所有其他文件)移动到一个单独的目录并包含一个包含以下行的 .htaccess 文件:

DENY from all 

还有一些其他选项可以防止直接访问。只是 define() 在你的 index.php 和你的 register.php 的顶部放置一个变量

defined('access') or die('Intruder alert!');

在顶部。另一种方法是诚实地告诉搜索引擎您的内容已被移动,他们不应再使用旧链接:

header("Status: 301"); /* Content moved permanently */
header("Location: http://yourserver/Register/");
exit;

更新

还有一件事让我想到,您还可以检查 $_SERVER["REQUEST_URI"],用户是否附加了任何“.php”并通过完全拒绝访问或仅拒绝访问来采取相应的行动重定向到新位置。

关于php - 如何停止使用 htaccess 规则直接执行 php 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1101895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com