1

作为预防措施,我想使用 PHP 创建一种易于重用/可修改的方法,将用户重定向到指定的 URL。

我有通常的 php 标头重定向:

<?php

   header( 'Location: http://www.stackoverflow.com/' ) ;

?>

然而,我更喜欢做的是,因为这个文件将被放置在很多目录中,以使生活更轻松,并从外部文件中提取 url,例如

http://www.stackoverflow.com/url.xml

这当然会包含相关网站的 URL,除非有另一种方法可以自动捕获域本身?这个我不确定。

任何人都可以很好地展示如何做到这一点或提供最好的方法吗?

谢谢你。

4

2 回答 2

1

我正在考虑与@adam 相同的方法,我不建议您从文件中提取 url,因为它可以从攻击者那里读取。最好将它们作为变量、数组或任何其他数据结构包含在 php 文件中。

将 url 存储在一个名为 config.inc.php 的文件中:

<?php

define('USER_PATH', '/redirect/user/path');
define('ADMIN_PATH', '/redirect/admin/path');

?>

然后在你的 php 文件中:

<?php
include 'config.inc.php';
header( "Location: http://{$_SERVER['HTTP_HOST']} . USER_PATH ) ; //or whatever variable you want to use to redirect.
?>

如果由于安全问题您想重定向某些文件夹,您可以使用 Apache 的 htaccess 来完成。只需将其放在根文件夹中,然后为每个重定向添加任意数量的最后一行。此处提到的每个文件夹只能由服务器上运行的脚本访问。
使用这个每个使用 HTTP 的访问请求都会被重定向。所以这只适用于包含要包含的脚本的目录。它不适用于不应该显示索引的图像目录,但图像应该保持可访问性。

RewriteEngine on
RewriteBase /
RewriteRule ^includes/(.*) http://www.stackoverflow.com/ [R=301,L]
RewriteRule ^includes/(.*) http://www.stackoverflow.com/ [R=301,L]

如果您对此不熟悉,可以使用http://www.htaccessredirect.net/

于 2013-01-05T15:13:02.267 回答
0

如果包含 url 的文件位于您无法控制的域中,则存在安全风险。

相反,将 url 存储在一个名为的文件中config.inc.php

<?php

define('REDIRECT_URL', '/redirect/path');

?>

然后将其包含在您的项目中:

<?php

include 'config.inc.php';

echo REDIRECT_URL;

// /redirect/path

?>
于 2013-01-05T15:07:00.197 回答