重定向 >> domain.com/test 到另一个 url (domain.com/test3 using .htaccess (wp)
Redirect >> domain.com/test to another url (domain.com/test3 using .htaccess (wp)
我正在尝试重定向一个完整的 URL
But this is not working ...
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 请求 header。 IE。在请求中指定的 hostname 例如。仅 www.example.com
- 这里没有方案、URL-path 或查询字符串。所以,这个 RewriteCond
指令永远不会匹配。
但是您还试图将空的 URL-path 与 RewriteRule
模式 ^$
匹配 - 因此,这永远不会匹配.在您的示例中,URL-path 是 /d.php
。 RewriteRule
模式 仅匹配 URL-path。
您也在该指令中重定向到 http
(而不是 https
)?您的示例使用 https
。您还删除了 www
子域,但同样,您的示例包含它?
如果您要重定向 from/to 相同的主机名并且只有一个域,那么您不需要在规则中明确包含域名(即请求的主机名)。
要匹配查询字符串,您需要匹配 QUERY_STRING
服务器变量。
尝试以下操作,靠近 .htaccess
文件的 top。
RewriteCond %{QUERY_STRING} ^id=ultimateselection\.zip$
RewriteRule ^d\.php$ /sd_product/ultimateselection-zip [R=301,L]
这需要靠近 .htaccess
文件的顶部。首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。
测试前清除浏览器缓存。
我正在尝试重定向一个完整的 URL
But this is not working ...
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 请求 header。 IE。在请求中指定的 hostname 例如。仅 www.example.com
- 这里没有方案、URL-path 或查询字符串。所以,这个 RewriteCond
指令永远不会匹配。
但是您还试图将空的 URL-path 与 RewriteRule
模式 ^$
匹配 - 因此,这永远不会匹配.在您的示例中,URL-path 是 /d.php
。 RewriteRule
模式 仅匹配 URL-path。
您也在该指令中重定向到 http
(而不是 https
)?您的示例使用 https
。您还删除了 www
子域,但同样,您的示例包含它?
如果您要重定向 from/to 相同的主机名并且只有一个域,那么您不需要在规则中明确包含域名(即请求的主机名)。
要匹配查询字符串,您需要匹配 QUERY_STRING
服务器变量。
尝试以下操作,靠近 .htaccess
文件的 top。
RewriteCond %{QUERY_STRING} ^id=ultimateselection\.zip$
RewriteRule ^d\.php$ /sd_product/ultimateselection-zip [R=301,L]
这需要靠近 .htaccess
文件的顶部。首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。
测试前清除浏览器缓存。