【问题标题】:URL redirect in htaccess filehtaccess 文件中的 URL 重定向
【发布时间】:2018-02-13 18:39:17
【问题描述】:

我想问一下如何在 htaccess 文件中从带有查询字符串参数的相同 url 重定向到没有查询字符串参数的相同 url。例如,如果我的网址是www.example.com/abc.php?cid=5&scid=10,我想将其重定向到www.example.com/abc.php

请注意,url 相同,只是在重定向中删除了查询字符串参数。我已经为具有单个查询字符串但具有多个参数的 URL 编写了 htaccess 文件代码,它不会重定向。

这是我的单个参数的代码,它按预期工作:

RewriteCond %{QUERY_STRING} cid=7$
RewriteRule (.*) /contact-us.php? [R=301,L]

它将contact-us.php?cid=7页面重定向到contact-us.php

但是当我为多个参数扩展代码时,它不会重定向。这是我在这种情况下写的:

RewriteCond %{QUERY_STRING} cid=9$
RewriteCond %{QUERY_STRING} scid=14$
RewriteRule (.*) /stakeholders.php? [R=301,L]

这个应该将stakeholders.php?cid=9&scid=14页面重定向到stakeholders.php页面。有人能告诉我第二个代码有什么问题吗?

我也用谷歌搜索了它,但几乎所有结果都是关于从一个 url 重定向到另一个 url 而不是删除查询字符串参数的同一个 url。谢谢。

【问题讨论】:

标签: php .htaccess redirect mod-rewrite


【解决方案1】:

您需要将查询连接到一个条件中,如下所示:

RewriteEngine On
RewriteCond %{QUERY_STRING} cid=9&scid=14 [NC]
RewriteRule ^(.*)$ http://www.example.com/stakeholders.php? [R=301,NC,L]

这将适用于cid=9&scid=14 的特定查询,如果您想对任何查询执行此操作,则可以改用cid=(.+)&scid=(.+)

重写 URL 末尾的 ? 阻止原始查询出现在其末尾,它使用 301 重定向来执行更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多