Php 向URL添加空间会重定向到搜索引擎

Php 向URL添加空间会重定向到搜索引擎,php,mod-rewrite,Php,Mod Rewrite,我对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 = arra


我对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/cont-act

如何将所有错误请求重定向到error.php文件
多谢各位

显示本地主机/测试/联系人的结果 搜索localhost/test/cont act[这不是链接]

这听起来像是你的浏览器将你的URL解释为一个搜索查询,因为你不小心在其中放了一个空格。然后,它似乎将您重定向到搜索引擎,而不是您的网站


因为这是您的浏览器而不是服务器所做的,所以您无法在全球范围内改变这种行为。当然,您可以更改浏览器的配置,但使用同一浏览器的其他人仍然会这样做。

这是典型的浏览器功能。您有一个位置栏,可以在其中执行两个完全不同的任务:

  • 键入要加载的URL
  • 键入要在默认搜索引擎中查找的搜索词
您键入的字符串未标识为URL,原因有二:

  • 它不以协议前缀开头(例如
    http://
  • 它包含一个空白(这在URL中是不允许的)
。。。因此,浏览器假设你想用谷歌搜索它,就像你键入“巴塞罗那的餐馆”一样

为了安全起见,您只需键入完整的URL:

http://localhost/test/cont%20act

。。。但您无法阻止访问者犯此错误。这是浏览器和用户之间的隐私;-)

确保键入完整地址,即
http://localhost/test/cont act
谢谢。我使用firefox就是为了这个目的。真的,在其他浏览器中一切正常。但是我的xampp上安装了drupal、wordpress和cmsms,这个问题是否得到了正确的处理?