更改处理此表单的URL

时间:2013-05-20 10:09:12

标签: php url search search-engine

我有一个没有action属性的表单,一个get方法,以及一个名为q的text类型的单个输入字段。

如果输入“查询”并提交表单,则确认页面的网址会显示为http://mySite.com/search.php?q=query

如何将网址设为http://mySite.com/search?q=query

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

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

我该怎么做?我更喜欢不涉及.htacess的解决方案

4 个答案:

答案 0 :(得分: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;

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

答案 1 :(得分:1)

在htaccess文件中写下以下代码

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

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

答案 2 :(得分:1)

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

如果您有Apache Web服务器,可以在htaccess文件中使用Rewrite Rules

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

答案 3 :(得分:-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')

这是一种非常基本的方式。您可能需要再添加一些支票。