【问题标题】:Redirect >> domain.com/test to another url (domain.com/test3 using .htaccess (wp)重定向 >> domain.com/test 到另一个 url (domain.com/test3 使用 .htaccess (wp)
【发布时间】:2021-06-02 20:00:55
【问题描述】:

我正在尝试重定向一个完整的 URL


But this is not working ...

【问题讨论】:

  • 你的 RewriteCond 永远不会匹配,因为https://www.moccioso.com/d.php? id=ultimateselection.zip 不是主机名。
  • 什么是帮助我实现这一目标的最佳解决方案?从你的角度来看

标签: apache .htaccess url redirect


【解决方案1】:
RewriteCond %{HTTP_HOST} ^https://www.moccioso.com/d.php? 
id=ultimateselection.zip$ 
RewriteRule ^$ http://moccioso.com/sd_product/ultimateselection-zip 
[L,R=301]

(我假设您没有将代码包装到实际代码中的多行?)

HTTP_HOST 变量包含Host HTTP 请求标头。 IE。请求中指定的 主机名 例如。仅限www.example.com - 这里没有方案、URL 路径或查询字符串。所以,这个RewriteCond 指令永远不会匹配。

但您也尝试将空 URL 路径与 RewriteRule 匹配 pattern ^$ - 所以再一次,这永远不会匹配。在您的示例中,URL 路径是 /d.phpRewriteRule 模式 仅匹配 URL 路径。

您还在此指令中重定向到http(不是https)?您的示例使用https。您还删除了 www 子域,但同样,您的示例包含它?

如果您从/重定向到相同的主机名并且只有一个域,那么您不需要在规则中明确包含域名(即请求的主机名)。

要匹配查询字符串,您需要匹配 QUERY_STRING 服务器变量。

在您的.htaccess 文件的顶部 附近尝试以下操作。

RewriteCond %{QUERY_STRING} ^id=ultimateselection\.zip$ 
RewriteRule ^d\.php$ /sd_product/ultimateselection-zip [R=301,L]

这需要靠近您的.htaccess 文件的顶部。首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。

在测试前清除浏览器缓存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2012-07-06
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多