我正在尝试设置我的404页面来检测引用网址。 我想在PHP中有这个想法吗? 非常感谢你
答案 0 :(得分:4)
<击> 撞击>
<击><?php
$referer = $_SERVER['HTTP_REFERER'];
?>
注意:不要过分依赖这些数据,因为很容易伪造。
在apache2.conf(或.htaccess)
中 击> <击> ErrorDocument 404 /your_error_dir/your_error_file.php
击>
<强>更新强>
http://ex.am/c8N4j
您的mod_rewrite应该检测到给定的参数:c8N4j
您的PHP脚本应该搜索数据库中的给定参数,如果发现它应该将用户重定向到实际页面。
答案 1 :(得分:3)
的.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
现在,您的所有请求都将重定向到index.php
请求的uri细分受众群将以$_SERVER['REQUEST_URI']
的形式提供。
所以,只需要在你的数据库中查找该字符串,并做任何你需要做的事情。
实施例: 我在localhost环境中设置了一个测试文件夹,添加了.htaccess并创建了一个新的index.php
<?php
$uri = $_SERVER['REQUEST_URI'];
$segments = explode('/', $uri);
var_dump($segments['2']);
将您的浏览器发送到:http://localhost/test/123/foo,它将打印
string '123' (length=3)
现在你的字符串在$ segments ['2']中。在数据库查询中使用它。 就这么简单。
答案 2 :(得分:2)
$_SERVER['HTTP_REFERER']
页面的地址(如果有的话) 将用户代理引用到当前 页。这是由用户代理设置的。 并非所有用户代理都会设置此项,并且 一些提供修改的能力 HTTP_REFERER作为一项功能。简而言之, 它真的不可靠。它真的不可信任。