【问题标题】:How to erase multiple parameters on a URL with .htaccess?如何使用 .htaccess 擦除 URL 上的多个参数?
【发布时间】:2016-01-20 04:18:25
【问题描述】:

我正在尝试制作自己的 CMS,此时我希望清理我的网址,但我无法删除第一个 GET 参数而只留下第二个。
我做的独特的事情是用另一个.htaccess 条件删除扩展文件名,但我无法解决这个问题。

一个例子:

www.mysite.com/posts?id=2&title=The%20PostTitle

收件人:

www.mysite.com/posts/The%20PostTitle

有人可以帮我吗?

【问题讨论】:

  • 构建自己的 CMS 需要大量的工作。如果真的有必要,你应该使用像 Symfony (PHP) 这样的框架作为基础。对于您的问题:您需要了解的有关 apache 重定向的所有信息都可以在这里找到 httpd.apache.org/docs/current/mod/mod_rewrite.html
  • 我真的不明白您为什么需要对 URL 进行这种转换。通常,您使用存储在数据库中的信息来创建像http://example.net/posts/the-post-title 这样的“谈话” URL,然后将所有这些 URL 重定向到 index.php,然后它会尝试进行反向查找以获取对应的 ID给定的title
  • 我不知道。我相信“帖子”页面只为客户端带来模板,然后为了获取 url 变量,我会使用“$_SERVER['REQUEST_URI']”。还是我完全迷路了?
  • 如果您使用 RewriteEngine 去除 ID 之类的参数,则此信息会丢失给 PHP,因为对于您的 PHP 脚本,看起来只有最后一个 URL 被调用来打开此文件。
  • 那么,是否有必要让它放在 URL 上,比如:www.example.com/post/1/the-posts-title 对吧?

标签: php .htaccess seo friendly-url


【解决方案1】:

我找到了一个视频教程,它对所有试图了解如何使用 .htaccess 文件的人都有用。 我希望它对您自己的项目很有帮助。 Semantic URL htaccess Tutorial SEO Friendly Clean Links

感谢所有试图帮助我的人!

对于讲西班牙语的人,您可以阅读一些有关正则表达式 (regex) 的内容。这是链接:Reemplazar cadenas y caracteres de un string.

【讨论】:

    【解决方案2】:

    试试这个

    RewriteEngine on
    RewriteRule ^posts/([a-zA-Z0-9_-]+)/?$ "posts?title=$1&id=$2" [NC]
    

    【讨论】:

    • 不错!现在我有另一个问题...关于该规则,我将在哪里删除“id”参数?
    • 我尝试了该规则,但对我不起作用。我想,也许我正在失去一些东西。朋友,谢谢。我会努力做到的。
    【解决方案3】:

    试试这个。它没有经过测试。

    RewriteCond %{REQUEST_URI} /posts?id=(\d+)&title=(.*)(&*.=.*){0,1}$ [NC]
    RewriteRule .* http://www.example.com/posts/[%2]/?id=%1&%3
    

    【讨论】:

    • 我认为我的服务器没有完全设置,因为我收到了错误 500。
    • 等一下。我将设置一个测试环境。
    • 我真的很感激,你不知道多少!而且我知道,只是我想用这个页面练习我的 PDO 技能,但我迷路了。 @Inceddy
    猜你喜欢
    • 2013-10-05
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 2015-02-25
    • 2011-02-11
    • 2015-11-01
    相关资源
    最近更新 更多