[英]Change URL for when this form is processed
我有一个没有动作属性的表单,一个get方法和一个名称为q的text类型的单个输入字段。
当输入“ query”并提交表单时,确认页面的URL看起来像http://mySite.com/search.php?q=query
。
如何获取URL为http://mySite.com/search?q=query
对于多字搜索(例如“查询一个”), http://mySite.com/search?q=query+one
? http://mySite.com/search?q=query+one
query+one吗?
所有这些都仍然导航到确认/结果页面。
我怎样才能做到这一点? 我希望不涉及.htacess的解决方案
最好的方法是重写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;
这不是一个有效的解决方案,但它会起作用
将以下代码写入htaccess文件
RewriteEngine On
RewriteRule ^search\?q\=([^/]*)$ /search.php?q=$1 [L]
然后使用http://mySite.com/search作为表单中的操作文件
解决此问题的一种可能方法是将您的请求路由到一个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]
对于多个术语,只需执行以下操作:
$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')
一种非常基本的方法。 不过,您可能需要再添加一些检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.