【问题标题】:How to remove characters from a redirected URL in .htaccess?如何从 .htaccess 中的重定向 URL 中删除字符?
【发布时间】:2018-11-10 22:51:06
【问题描述】:

我最近注意到 .htaccess 重定向中的一个小问题,我找不到解决方法。 我正在重定向表单的数千个链接

"example.com/tinc?key={大量随机字符等}"

并将它们重新指向:

“example.com/search.php”

以下 .htaccess 命令可以正常工作:

"RedirectMatch 301 ^/tinc.*$ example.com/search.php"

...除了我刚刚意识到它实际上所做的是将用户发送到

example.com/search.php?key={大量随机字符等}

认为 .htaccess 脚本将用户定向到新的特定 URL,但它实际上只是用新 URL 替换了原始 URL 的第一部分。

因为 search.php 只是响应它找不到与字符串匹配的有效响应,这不是灾难性的,但它在地址栏中并不漂亮,我希望它只为我自己正常工作满意。

那么 - 任何人都可以建议如何以一种最终丢失随机字符串的方式重定向吗?谢谢!

【问题讨论】:

    标签: regex .htaccess redirect


    【解决方案1】:

    我看不出问题出在哪里,但更明确一点,定义多个规则可能会有所帮助:

    RedirectMatch 301 ^example.com/tinc$ example.com/search.php
    RedirectMatch 301 ^example.com/tinc\?key=.*$ example.com/search.php
    

    如果这不起作用,那么假设你唯一的 GET 参数是key,你可以试试这个RewriteCond

    RewriteCond %{QUERY_STRING} ^key=.*$
    RewriteRule ^example.com/tinc$ example.com/search.php [L,R=301]
    

    祝你好运!

    【讨论】:

    • 感谢艾迪生,非常感谢,至少我现在不觉得我错过了什么明显的东西!不幸的是,它们导致了同样的问题。字符串以 .../search.php?={original string} 的形式存在。正如我所说,就好像规则只是导致将所有内容替换为搜索到的文本,并将其他所有内容留在原处。还是谢谢!
    • 您是否认为在替换发生 之后 URL 发生了某些事情?发生这种情况是不正常的。
    • 我真的不知道 - 我尝试了不同的字符串并得到了相同的结果......直到现在。我建立了一个应该失败的链接,发现它现在可以按预期工作。问题似乎在于没有捕获“?”象征。如果我尝试“miramodus.com/tinc_add_any_string”它会按预期工作,如果我尝试“miramodus.com/tinc?_add_any_string”它会在 URL 中包含 _add_any_string。不清楚它为什么这样做,但捕获 ? .htaccess 中的标记应该可以解决问题。非常感谢您的帮助 - 您无意中为我解决了这个问题!
    猜你喜欢
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多