【问题标题】:Remove All Query Strings from URL从 URL 中删除所有查询字符串
【发布时间】:2011-12-26 20:33:24
【问题描述】:

我想重写我的网址,这样只要有一个?,它和之后的所有内容都会被删除。

我有各种字符串,比如:

....html?frame=...

....html?sport=...

....html?type=...

为了方便起见,如果有 ? url 中的任何位置,都应该被截断。

(顺便说一句,我已经把.php改写成.html了)

非常感谢。

【问题讨论】:

标签: mod-rewrite query-string truncate


【解决方案1】:

正如 cmets 中指出的那样:

RewriteCond %{QUERY_STRING} !=""
RewriteRule ^(.*)$ /$1?

有效,但 OP 说它恢复了 php -> html 扩展转换。

尝试添加 php/html 重写 before:

RewriteRule ^(.*)\.php$ /$1.html

RewriteCond %{QUERY_STRING} !=""
RewriteRule ^(.*)$ /$1? [L,R=302]

我刚刚尝试过,我遇到了RewriteBase 的一些问题,您可能需要对其进行设置才能使其正常工作。否则,看起来不错。

【讨论】:

  • 谢谢,达霍格。该代码无效。我确实看到了这段代码:RewriteCond %{QUERY_STRING} !="" RewriteRule ^(.*)$ /$1? [L,R=301],但它在删除查询字符串后将扩展名转回 .php。
  • 更新了我的答案以修复......好吧,一切。添加了一些关于 php->html 扩展转换的信息。
  • 谢谢,达霍格。我将不得不摆弄它,因为 php/html 重写的位置没有影响。
【解决方案2】:

来自mod_rewrite documentation(强调我的):

修改查询字符串

默认情况下,查询字符串不变地传递。但是,您可以在包含查询字符串部分的替换字符串中创建 URL。只需在替换字符串中使用问号来指示应将以下文本重新注入到查询字符串中。 当您想删除现有的查询字符串时,只用问号结束替换字符串。要合并新旧查询字符串,请使用 [QSA] 标志。

【讨论】:

    猜你喜欢
    • 2011-02-02
    • 1970-01-01
    • 2016-07-22
    • 2011-03-28
    • 2011-09-02
    • 1970-01-01
    • 2018-12-08
    相关资源
    最近更新 更多