动态PHP重定向通过从外部文件中提取URL

时间:2013-01-05 15:02:04

标签: php redirect dynamic

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

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

<?php

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

?>

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

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

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

是否有人能够表达如何做到这一点或提供最佳方法?

谢谢。

2 个答案:

答案 0 :(得分:1)

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

将网址存储在名为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/

答案 1 :(得分:0)

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

相反,请将网址存储在名为config.inc.php的文件中<:p>

<?php

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

?>

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

<?php

include 'config.inc.php';

echo REDIRECT_URL;

// /redirect/path

?>