我对URL中的空格有问题。如果地址包含空格,如何正确重定向请求。我使用的是examplep,这就是我目前所拥有的。
htaccess
RewriteEngine On
RewriteBase /test/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
index.php
//sample pages
$pages = array('home','about','contact');
$parts = explode("/",$_SERVER['REQUEST_URI']);
if(!in_array(end($parts), $pages))
{
header("HTTP/1.0 404 Not Found");
echo "Page not found";
die();
}
else
{
echo "You are on the ".end($parts)." page";
}
error.php
echo "Error!";
当我键入地址http://;localhost/test/contactk或http://;localhost/test/contact一切都正常工作,但如果有人意外地键入了一个包括空白的地址,一切都崩溃了,页面被重定向到localhost之外,我可以看到这样的内容:
显示localhost/test/contact的结果
搜索localhost/test/contact
如何将所有错误请求重定向到error.php文件
非常感谢。
显示localhost/test/contact的结果搜索localhost/test/contact[这不是链接]
这听起来像是你的浏览器在将你的URL解释为搜索查询时,你不小心在其中放了一个空格。然后它似乎将你重定向到搜索引擎,而不是你的网站。
因为这是浏览器的行为,而不是服务器的行为,所以你无法在全球范围内改变这种行为。你当然可以更改浏览器的配置,但这仍然会发生在使用同一浏览器的其他人身上。
这是一个典型的浏览器功能。你有一个位置栏,你可以在那里做两个完全不同的任务:
- 键入要加载的URL
- 键入要在默认搜索引擎中查找的搜索词
您正在键入一个未被标识为URL的字符串,原因有两个:
- 它不以协议前缀开头(例如
http://
) - 它包含一个无标题的空白(URL中不允许使用此空白)
所以浏览器假设你想用谷歌搜索它,就像你输入了"巴塞罗那的餐馆"一样。
为了安全起见,您只需键入完整的URL:
http://localhost/test/cont%20act
但是你不能阻止你的访问者犯这个错误。这是浏览器和用户之间的私有内容;-)