停止WordPress从301重定向/index.php到/

时间:2015-04-09 20:59:42

标签: php wordpress .htaccess http-status-code-301 url-redirection

我需要能够浏览到http://www.example.com/index.php,但WordPress会自动将其重定向到http://www.example.com/

是否可以仅为主页停止此重定向?

这是我的.htaccess文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

2 个答案:

答案 0 :(得分:3)

重定向发生在redirect_canonical函数中。在重定向发生之前,有一个过滤器应用于重定向URL:

$redirect_url = apply_filters( 'redirect_canonical', $redirect_url, $requested_url );

如果您挂钩该过滤器,您应该能够禁用重定向。

add_filter('redirect_canonical', function($redirect_url, $requested_url) {
    if($requested_url == home_url('index.php')) {
        return '';
    }
}, 10, 2);

我通过将上述过滤器添加到主题的functions.php文件中来验证这是有效的。请注意,必须在重定向操作触发之前附加此过滤器,因此将过滤器放在模板文件中将不起作用。

答案 1 :(得分:0)

应该有效。在RewriteBase /下添加。

DirectoryIndex <somerandomfile>.php
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule (.*) http://www\.example\.com/index\.php$1 [R=301,L]