【发布时间】:2014-04-26 02:19:50
【问题描述】:
我想做的是让用户在命令行中输入搜索字符串并将他重定向到适当的页面。例如:用户键入:www.mydomain.com/something,我将他定向到 www.mydomain.com/page.php?id=27408
我所拥有的是 .htaccess 中的一个命令:ErrorDocument 404 /index_404.php 因此请求被发送到我的 php 脚本,在我的数据库中搜索正确的 id 并将他引导到请求的页面。 – 这很好用。
不幸的是,每个 404 错误(例如,一些图片未找到)都会发送到该 php 页面并打扰我,因此流量很大。我有一个重定向 301 的解决方案——但我的提供商的服务器不允许我通过 php-script 生成 .htaccess。
所以我的问题是:有没有办法检查请求是否只匹配字母并只重定向这些请求。类似的东西:
ErrorDocument 404(在 [a..z] 中的请求)/index_404.php
并让其余的默认处理?如果是这样,请发送一个体面的例子。
这里是我的 php-script 的基本代码:
if (isset($_SERVER["REQUEST_URI"])) {
$in = $_SERVER["REQUEST_URI"];
$in = str_replace("/","",$in); //
dbconnect();
$sql = 'select * from menu where REPLACE(menu," ","") = "'. $in;
$result = @mysql_query($sql);
if ($data = @mysql_fetch_array($result)) {
$out = 'page.php?id='.$data['id'];
}
}
if (isset($out)) {
header("Location: ".$out);
} else {
header("Location: "."index.php");
}
【问题讨论】:
-
你有点滥用
ErrorDocument并以一种不寻常的方式接近它。您可以发布一些index_404.php以便我们了解您是如何进行重定向的吗? (通过 REQUEST_URI 或其他)这会更好,更传统地处理RewriteRule... -
我同意。但我对 RewriteRule 不熟悉,所以我发布了这个问题。正如我所提到的,当 cms 创建新的菜单项时,我正在寻找一种无需操作 htaccess 的解决方案。 (上面添加了一个代码示例)。
-
好的,感谢您发布代码。我将其充实到下面的答案中。