1

私のニーズに合わせて単純な URL パターンを書き直そうとしているワードプレスで問題が発生しています。

探している:

How can I rewrite: localhost/projects/55/1 into index.php?page_id=X&proID=55&subID=1 without getting a 404?

私がこれまでに試したこと:

.htaccess を直接変更: 機能しません。次に、いくつかのサンプルを読み、init-hook で wordpress 関数 add_rewrite_rule() を呼び出して試してみました。これは私の現在のコードです:

add_action('init', 'add_rewrite_rules');
function add_rewrite_rules() {
    add_rewrite_rule('^projects/([^/]*)/?([^/]*)?/?','index.php?page_id=8&proID=$matches[1]&subID=$matches[2]','top');
}

誰かがこれで私を助けることができますか?

編集1: 参照

編集2:

わかりました。これで、404 が表示されなくなりました。残念ながら、まだ機能していません (何か間違ったことをしたのかもしれません)。

echo '<pre>'; var_dump($_REQUEST); var_dump(get_query_var('proID')); var_dump(get_query_var('subID')); echo '</pre>';

結果:

array(0) {
}
string(0) ""
string(0) ""

ページのリロードがあるので、 に移動しlocalhost/projectsます。

ファイアーバグ: URL: http://10.0.0.109:8888/projects/25/2 Status: 301 Moved Permanently Domain: 10.0.0.109:8888 Size: 3.1 KB RemoteIP: 10.0.0.109:8888

htaccess ファイル:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    
    # Custom rule
    RewriteRule ^projects/([0-9]+)/?([0-9]+)?/?$ /index.php?page_id=8&proID=$1&subID=$2 [L,QSA]
    
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>
4

2 に答える 2

2

htaccess ファイルをもう一度試すことができます。このルールは、既に存在する可能性のある wordpress ルールの上に配置する必要があります。

RewriteRule ^projects/([0-9]+)/([0-9]+)/?$ /index.php?page_id=8&proID=$1&subID=$2 [L,QSA]
于 2013-09-16T09:03:40.023 に答える