web-dev-qa-db-ja.com

RewriteRuleはタグ内の数字ではなく文字を受け入れます

RewriteRuleは数値に対してのみ機能します。

私は現在リンクを取得しようとしています

example.com/subdir/StackExchange/

例えばとのリンクとして機能する。追加のウェブサイトタグ:

example.com/subdir?website=StackExchange


私は.htaccessでRewriteRuleを以下のように設定しました。

RewriteRule ^subdir/(.*)/$ subdir.php?website=$1 [L]

数字(example.com/subdir/123/)を使用すると、echo $_GET["website"]は "123"をエコーし​​ます。私がアルファベット(example.com/subdir/abc/)を使うとすぐにうまくいきません

これをどうやって変更できますか?これはWordPressの問題ですか? WordPress設定ダッシュボードの固定リンクオプションを "投稿名"に設定しました。他の方法も試しましたが、何も変わっていません。

1
H. Grimm

.htaccessはそのままにしておきます。これにはWordPress 書き換えAPI を使用できます。

add_action( 'init', function(){
    return add_rewrite_rule(
        'subdir/([^/]+)/?$', // ([^/]+) takes alphanumeric, while ([0-9]+) accepts digits
        'index.php?pagename=subdir&website=$matches[1]',
        'top'
    );
});

add_filter('query_vars', function($v){ return array_merge(array('website'),$v); });

この例では、まずsubdirが有効なページスラッグであることを確認してください。そのコードを子テーマの関数ファイルまたはプラグインに保存した後、$_GET globalを使用する代わりに get_query_var('website') を使用してwebsiteプロパティを取得できます。

それが役立つことを願っています。

1
Samuel Elh