我目前正在研究一个WordPress项目,并且有点卡在.htaccess重写规则上。WordPress add_rewrite_rule返回一个字符串404
我的WordPress的重写规则,代码如下:
if (!function_exists('check_string_id_rule')){
function check_string_id_rule(){
add_rewrite_rule('id-check/([^/]+)','id-check/?id=$1','top');
}
add_action('init', 'check_string_id_rule');
免责声明:根据文档我应该用火柴$ [1],而不是$ 1。我试过,但是,它会简单地将id的值设置为“matches [1]”。在某种程度上,1美元似乎可以做到这一点。
当我浏览到mywebsite.com/id-check/12一切正常,我的ID有但是我的ID是建立了一些含有字母字符的12.
值从az,0-9的数字和偶尔的连字符' - '。
如果我导航到mywebsite.com/id-check/12a-5,我被重定向到一个空白页面。 WordPress似乎将我重定向到一个不存在的页面。它试图将我重定向到/ 12a-5页面。去mywebsite.com/id-check/?id=12-a5按预期工作。
为什么我的规则没有被执行?我检查了.htaccess文件,似乎没有任何竞争规则。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteRule ^id-check/([^/]+) /id-check/?id=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
这是一些WordPress的怪癖,还是我在这里错过了什么?
谢谢你在前进,
斯泰恩范德波