繁体   English   中英

更改处理此表单时的URL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM