我有一个没有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的解决方案
答案 0 :(得分:3)
最好的方法是重写htaccess文件.. 但你告诉你试过这个
所以这是纯粹的PHP
在$a
我已经拿走了这个字符串..
您必须使用PHP
$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')
这是一种非常基本的方式。您可能需要再添加一些支票。