2011-11-25 48 views
0

如果我有一个GET搜索字段,我怎么能提交到一个干净的网址(例如/search/keyword而不是index.php?fn=search&term=keyword)?如果可能的话,我不想用Javascript来覆盖表单的提交事件。如何使用php获取干净的网址

谢谢。

+2

谢谢,追!我总是忘记在代码标签中加入一小段代码。 – penguinrob

回答

0

您必须使用javascript。您可以将PHP脚本重定向到“干净”网址,但即使如此,您仍然会首先访问“丑陋”网址。

+0

这就是我所害怕的。 – penguinrob

+0

我结束了刚刚使用的JavaScript和编码一个单独的丑陋的网址,非JavaScript的形式可以提交。比我想象的要容易得多。 – penguinrob

-1

我强烈建议您使用类似CodeIgniterCakePHP的框架。他们都具有干净的网址能力等等。

+0

如果我已经开始使用这些框架之一,那很好,但是,我已经是这个项目的一个很好的部分,并且遇到了这个问题。 – penguinrob

+0

好吧,你从一开始就注定要失败。祝你好运 – Herr

2

我从你的标签(.htaccess)中假设你使用的是Apache,如果可以的话,你可以使用mod_rewrite引擎使你的查询字符串搜索引擎友好。

即使世界像this one

各地的网络一些非常好的资源,从本质上讲,你需要做的是

确保mod_rewrite的安装/在服务器上启用

接通国防部重写和配置规则

(根据很好的资源here),转换自

http://www.best-food-of-the-usa.com/index.php?operation=top&state=arizona& 城市=台面&上限= 10

http://www.best-food-of-the-usa.com/arizona/mesa/top10.html

您可以使用规则

RewriteRule ([a-zA-z]+)/([a-zA-z]+)/top10\.html$ index.php?operation=top&state=$1&city=$2&limit=10 

很明显,你可以让这条规则无论是更简单,更通用的处理所有您的查询字符串,或者您可以为您想要重写的每个网址进行自定义。

记住并更新您的应用程序,以便它指向新的重新编写的URL虽然!

+0

有许多方法可以让它工作而不必以这种方式使用它。像上面使用mod_rewrite重写URL一样的任何修改只会降低已经吸引Apache的性能。 – gca

0

您对您的index.php进行POST调用,然后重定向到一个很好的URL。

的index.php:

<?php 
if (!empty($_POST["fn"])){ 
    $search = $_POST["fn"]; 
    $keyword = $_POST["term"]; 

    header("Location: http://www.yourwebsite.com/$search/$keyword"); 


}else{ 

// Show your content 

} 

?> 

当然,你必须使用mod_rewrite处理您不错的URL。