我在URL中有空格问题。如果地址包含空格,如何正确地重定向请求。我正在使用xampp,这是我到目前为止。
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 / cont act
如何将所有错误请求重定向到error.php文件
谢谢。
答案 0 :(得分:1)
显示localhost / test / contact的结果 搜索localhost / test / cont act [这不是链接]
这听起来就像您的浏览器在您意外地在其中放置空格时将您的URL解释为搜索查询。这似乎是将您重定向到搜索引擎而不是您的网站。
因为这是您的浏览器而不是您的服务器,所以您无法在全局范围内更改此行为。您当然可以更改浏览器的配置,但这仍然会发生在使用相同浏览器的所有其他人身上。
答案 1 :(得分:0)
这是一个典型的浏览器功能。您有一个位置栏,您可以在其中执行两项完全不同的任务:
您输入的字符串尚未标识为URL,原因有两个:
http://
)...所以浏览器假设您要谷歌,就好像您在巴塞罗那输入“餐馆”一样。
为了安全起见,您只需输入完整的网址:
http://localhost/test/cont%20act
...但您无法阻止访问者发生此错误。这是浏览器和用户之间的私密内容; - )