0

我有一个没有操作属性的表单、一个 get 方法和一个名称为 q 的文本类型的单个输入字段。

当输入“查询”并提交表单时,确认页面的 URL 如下所示http://mySite.com/search.php?q=query

我怎样才能得到网址http://mySite.com/search?q=query

对于多词搜索(例如“查询一个”)http://mySite.com/search?q=query+one

同时仍在导航到确认/结果页面。

我怎样才能做到这一点?我更喜欢不涉及 .htacess 的解决方案

4

4 回答 4

3

最好的方法是重写 htaccess 文件。但你告诉你试过这个

所以这是纯php

$a我已经使用了这个字符串。你必须使用 PHP 直接从当前页面获取 URL

   $a= 'http://mySite.com/search.php?q=query';
   echo $a;

   echo "</br>";
   $b= str_replace('.php','',$a);
   echo $b;

空间

   $a= 'http://mySite.com/search.php?q=query one';


   echo "</br>";
   $b= str_replace('.php','',$a);
   $c= str_replace(' ','+',$b);
   echo $c;

不是一个有效的解决方案,但它会工作..

于 2013-05-20T10:29:08.437 回答
1

在您的 htaccess 文件中写入以下代码

RewriteEngine On
RewriteRule ^search\?q\=([^/]*)$ /search.php?q=$1 [L]

然后在表单中使用http://mySite.com/search作为操作文件

于 2013-05-20T10:14:22.100 回答
1

解决此问题的一种可能方法是将您的请求路由到一个 PHP 文件 ( index.php),该脚本解析请求的 URL 并选择适当的操作(在您的情况下 - 搜索)。

如果你有 Apache Web 服务器,你可以在文件中使用重写规则:htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
于 2013-05-20T10:15:31.603 回答
-1

对于多个术语,只需执行以下操作:
$query = str_replace(' ', '+', $_GET['search']);

对于重定向,您可以检查 $_GET is_empty() 是否,然后相应地显示另一个 html 页面:
if (!is_empty($_GET)) echo file_get_contents('result.html');
else echo file_get_contents('form.html')

一种非常基本的方法。不过,您可能需要添加更多检查。

于 2013-05-20T10:15:12.653 回答