htaccess文件中的WordPress RewriteRule无法正常工作,出现404错误

3
我试图创建一个RewriteRule,使一个页面加载另一个页面的内容并显示正确的信息。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^index\.php/file/(.*)$ index.php/file/?value=$1 [L,QSA]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

当我输入我的URL时,它显示404错误,但是“index.php/file/?value=$1”对我来说运行良好。
需要帮助吗?
编辑:
仍然不起作用...我已经处理了这个问题将近一个星期,所以如果有人知道如何使其工作,请告诉我。
编辑2 [解决方案]:
我最终解决了我的问题。关键是我需要对wp主题中的functions.php文件进行一些更改:
add_filter('query_vars', 'add_state_var', 0, 1);
function add_state_var($vars){
    $vars[] = 'value';
    return $vars;
}

add_rewrite_rule('^file/([^/]+)/?$','index.php?
pagename=file&value=$matches[1]','top');

并且保持我的 .htaccess 文件如下:

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

希望这能帮助到某些人!

你尝试了哪些网址? - Ben
@Ben,我刚刚添加了解决方案,不过还是谢谢你的关心! :) - molinet
我也好奇为什么像这样的东西都不起作用,你必须去设置->永久链接->点击保存。我所有的设置都正确,这浪费了我2个小时的时间。 - Jiří
1个回答

1
我们建议您放弃整个RewriteRule块,并将其替换为以下一行代码:
FallbackResource /index.php

这样可以消除重写的复杂性和脆弱性,并提高效率。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接