首页 > 解决方案 > Wordpress .htaccess 重定向问题

问题描述

最近,我从一个静态网站搬到了一个 WordPress 制作的网站。除了一件事,一切都完美无缺。

我的公司使用播放器来显示内容,播放器调用这样的 url 来获取内容:

https://mysite.fr/#thecontentpage.html

此网址来自旧网站。由于新网站现在在 WordPress 上,因此 URL 是一个更“经典”的 URL:

https://mysite.fr/thecontentpage.html

最好的解决方案是让玩家调用新的 url,但这是不可能的。所以我想用 做一个重定向,.htaccess但它不起作用。

这是我的.htaccess

# BEGIN WordPress

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

# END WordPress

Redirect 301 https://mysite.fr/#thecontentpage.html https://mysite.fr/thecontentpage.html

即使有重定向,当我打电话时https://mysite.fr/#thecontentpage.html我登陆主页而不是我想要的页面。
我该怎么做才能让我的重定向工作?

标签: wordpress.htaccessredirect

解决方案


您在这里不走运,因为主题标签永远不会发送到服务器,因为它是页内片段。它只被浏览器使用。因此 .htaccess 文件永远不会看到它,并且您不能针对它进行重写。因此,您必须想出一种在 WordPress 加载之前使用 JavaScript 进行重定向的独特方法。您很可能需要一个 index.php 页面来处理重定向,然后将您的规则中未捕获的任何内容直接发送到 WordPress。

更新 如前所述,您不能使用“WordPress”来执行此操作,因为它对服务器永远不会获取哈希部分不起作用。但是,您可以使用 JavaScript。将此代码放在您的<head>标签内:

<script>
    var $hash = window.location.hash.substring(1);
    if( $hash.length > 0 ) {
        window.location = $hash;
    }
</script>

显然,您将希望真正改变这个简单的代码以进行更多增强的检查和验证,以便 example.com/#whatever 不会尝试重定向......但这对您来说是一个开始。您可以拥有一组“白名单”重定向并检查$hash该数组......只是一个想法。


推荐阅读