我有一个奇怪的网址请求到我的网站..可能来自机器人或其他网站.. 我已经研究了我在网络上的所有代码和链接..但没有找到和这样的链接 他们要求的网址不正确的是:
/modules.php?file=article&name=News&sid=281737
但正确的应该是
/modules.php?name=News&file=article&sid=281737
事实上,php可以处理这两个......但我使用的是静态缓存系统,它在缓存上生成两个文件。制作大量文件不利于网络性能。
我需要一个使用$ _SERVER ['REQUEST_URI']和正则表达式检测错误网址的php脚本 然后使用301标题
将其发送到正确的网址感谢您的任何建议。
答案 0 :(得分:2)
在Web服务器级别执行此操作。由于您标记了您的问题.htaccess
,我认为这是Apache。
RewriteEngine On
RewriteCond %{QUERY_STRING} file=(.*)&name=(.*)&sid=(.*)
RewriteRule modules.php modules.php?name=%2&file=%1&sid=%3 [R=301,L]
我没有测试过,它有用吗?
答案 1 :(得分:0)
你可以尝试这样的事情 -
<?php
if (preg_match ('/file=article\&name=Name/', $_SERVER['REQUEST_URI'])) {
header ('HTTP/1.1 301 Moved Permanently');
header ('Location: ' . str_replace('file=article&name=Name', 'name=Name&file=article', $_SERVER['REQUEST_URI']);
}
或更通用的
<?php
if (preg_match ('/file=(.*)\&name=(.*)/', $_SERVER['REQUEST_URI'], $matches)) {
header ('HTTP/1.1 301 Moved Permanently');
header ('Location: ' . preg_replace('/file=(.*)&name=([^&]*)/', 'file=${1}\&name=${2}', $_SERVER['REQUEST_URI']));
}