【问题标题】:How to GET to a clean url using php如何使用 php 获取一个干净的 url
【发布时间】:2011-11-25 22:56:35
【问题描述】:

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

谢谢。

【问题讨论】:

  • 谢谢,蔡斯!我总是忘记在代码标签中放简短的sn-ps代码。

标签: php forms .htaccess get clean-urls


【解决方案1】:

我从您的标签 (.htaccess) 中假设您使用的是 apache,如果是这样,您可以使用 mod_rewrite 引擎使您的查询字符串对 SEO 友好。

网络上有一些非常好的资源,例如this one

基本上你需要做的是

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

开启模组重写并配置规则

(根据一个不错的资源here),从

转换

http://www.best-food-of-the-usa.com/index.php?operation=top&state=arizona& city=mesa&limit=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 对其进行自定义。

记住并更新您的应用,使其指向新的重写网址!

【讨论】:

  • 有很多方法可以让它工作,而不必以这种方式使用它。像上面提到的使用 mod_rewrite 重写 URL 之类的任何修改只会降低已经很糟糕的 Apache 的性能。
【解决方案2】:

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

【讨论】:

  • 我最终只使用了 javascript 并编写了一个单独的丑陋 url,非 javascript 表单可以提交到该 URL。比我想象的要容易得多。
【解决方案3】:

您对 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。

【讨论】:

    【解决方案4】:

    我强烈建议您使用像 CodeIgniterCakePHP 这样的框架。它们都具有干净的 url 能力等等。

    【讨论】:

    • 如果我从其中一个框架开始就好了,但可惜我已经是这个项目的一个很好的部分并且遇到了这个问题。
    • 你从一开始就注定要失败。祝你好运
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2013-10-08
    • 2016-02-27
    • 1970-01-01
    相关资源
    最近更新 更多