我目前正在研究一個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的怪癖,還是我在這裏錯過了什麼?
謝謝你在前進,
斯泰恩範德波