Wordpress .htaccess重定向问题

时间:2018-05-25 09:55:42

标签: wordpress .htaccess redirect

最近,我从静态网站转到了WordPress网站。除了一件事,一切都很完美。

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

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

此网址来自旧网站。由于新网站现在在WordPress上,网址是一个更经典的#34;一:

https://mysite.fr/thecontentpage.html

最好的解决方案是让玩家调用新网址,但这是不可能的。所以我考虑使用.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时,我也会登陆主页而不是我想要的页面。
如何让重定向工作?

2 个答案:

答案 0 :(得分:1)

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

<强>更新 如上所述,你不能用&#34; WordPress&#34;因为它不会工作,服务器永远不会得到哈希部分。但是,您可以使用JavaScript。将此代码放在<head>标记内:

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

显然,您需要真正更改此简单代码以进行更多增强的检查和验证,以便example.com/#whatever不会尝试重定向...但这对您来说是一个开始。你可以拥有一组&#34;白名单&#34;重定向并检查$hash对阵该阵列......只是一个想法。

答案 1 :(得分:0)

由于我无法在PHP或.htaccess中进行重定向,因此我只使用Javascript进行重定向。

我将此脚本插入我子主题的 private void loadMessages(){ if(keys.size() == 0){ messagesList.clear(); Toast.makeText(getContext(), " size zero no results found", Toast.LENGTH_SHORT).show(); } else { messagesList.clear(); for (int i = 0; i < 5; i++) { if (i>=keys.size()){ Toast.makeText(getContext(), "list is less than 5 item", Toast.LENGTH_SHORT).show(); } else { listPos = i; String id = keys.get(i); mWorkDatabase.child(id).addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { String messageKey = dataSnapshot.getKey(); NewWork message = dataSnapshot.getValue(NewWork.class); itemPos++; messagesList.add(message); mAdapter.notifyDataSetChanged(); mRecyclerView2.scrollToPosition(messagesList.size() - 1); } @Override public void onCancelled(DatabaseError databaseError) { } }); } } } } 文件中:

header.php

由于此文件位于子主题中,因此我不会被主题更新所困扰。那我的问题就解决了!