【问题标题】:How to redirect WordPress URL to base url without parameter如何在没有参数的情况下将 WordPress URL 重定向到基本 url
【发布时间】:2020-05-07 04:23:22
【问题描述】:

我们正在尝试将 http://example.com/gtsdsds8yz/x3idsdssq.php?wtb=hgtvsdsd-m3u 等 URL 重定向到 http://example.com

为此,我们使用.htaccess,例如:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^wtb=hgtvsdsd-m3u$ [NC]
RewriteCond %{HTTP_HOST} .*
RewriteRule ^gtsdsds8yz/x3idsdssq\.php https://example.com [L,R=301]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>


RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

【问题讨论】:

  • 所以如果我理解正确,您在子目录中有 wordpress 实例,但您希望在 URL 中没有该目录的情况下指向 URL?
  • 是的,但目前我们删除了该文件夹,因此我们计划 301 重定向到主页@FaisalSarfraz
  • 您还没有说明您当前的指令有什么问题?你有错误吗?重定向不正确?

标签: php wordpress .htaccess mod-rewrite


【解决方案1】:
RewriteCond %{QUERY_STRING} ^wtb=hgtvsdsd-m3u$ [NC]
RewriteCond %{HTTP_HOST} .*
RewriteRule ^gtsdsds8yz/x3idsdssq\.php https://example.com [L,R=301]

这应该重定向到根目录,但是,它不会删除 URL 参数,我认为这是您的问题?但请注意,您在替换字符串上的主机名之后严格缺少尾部斜杠(浏览器需要更正此问题)。

要删除查询字符串,您需要QSD(查询字符串丢弃)标志(Apache 2.4+)。或者,如果您仍在使用 Apache 2.2,则将 ? 附加到 substitution 字符串的末尾。

例如:

RewriteCond %{QUERY_STRING} ^wtb=hgtvsdsd-m3u$ [NC]
RewriteRule ^gtsdsds8yz/x3idsdssq\.php https://example.com/ [L,R=301,QSD]

请注意,这应该位于所有 WordPress 指令之前,位于 .htaccess 文件的顶部。

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

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

您还将 HTTP 到 HTTPS 重定向放置在错误的位置。这也需要在文件的开头 - 在 WordPress 前端控制器之前,因为它根本不会重定向您的 WP URL。

【讨论】:

    猜你喜欢
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2011-09-28
    • 2012-11-07
    • 2012-08-28
    • 2018-05-18
    相关资源
    最近更新 更多