繁体   English   中英

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

[英]Dynamic PHP Redirect via extracting URL from an external file

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

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

<?php

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

?>

但是,我更喜欢这样做,因为此文件将放置在许多目录中,以简化工作,并从外部文件中提取网址,例如

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

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

有人能表现出如何做到这一点或提供最佳方法的人吗?

谢谢。

我在以与@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/

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

而是将网址一次存储在名为config.inc.php的文件中:

<?php

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

?>

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

<?php

include 'config.inc.php';

echo REDIRECT_URL;

// /redirect/path

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM