私はこのようにID 17で私の投稿にアクセスしたいです。
http:// localhost/archives/17/moot-bla-foo-ramble
言い換えれば、idが決定するもので、それ以降のものはすべてナメクジなのかそうでないのかを問わない。同じページにつながるこれらのリンクとよく似ています(他の多くのサイトも同じです)。
私は私の.htaccessの一番上の近くでこのような書き換え規則を定義しようとしました:
RewriteRule ^archives/(\d{1,12})(?:/.*) archives/$1 [NC]
これははほとんどうまく動く、つまり正しいページに行きますが、その場合はpage-not-foundになります。ワードプレスは再びPATH_INFOを見て(筆者は)$query_string
はstring attachment=moot-bla-foo-ramble
であると述べています
私は301リダイレクトをしたくありません。
私のお気に入りまたはコース、そのようなものがパーマリンク設定にあった場合:カスタム構造
/archives/%post_id%/%wildcard%
それでも「大騒ぎ」を必須にするでしょうが、それ以上に良いのですが….
/archives/%post_id%(/%wildcard%)?
希望的な考えだと思います。
代わりにhtaccessを使うべきではなく、WordPress APIを使うべきです
例えば.
function custom_rewrite( $wp_rewrite ) {
$feed_rules = array(
'archives/(\d+)(?:/.*)+' => 'index.php?p='. $wp_rewrite->preg_index(1)
);
// ( array merge must be done this way, to ensure new rule comes first )
$wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_filter( 'generate_rewrite_rules', 'custom_rewrite' );
基本的に@ Tomの答えと同じですが、提供された add_rewrite_rule
ラッパーを使用します。
add_action('init','wpse48481_rewrite_rules');
function wpse48481_rewrite_rules(){
add_rewrite_rule('^archives/([0-9]{1,})/','index.php?p=$matches[1]','top');
}
これは以下の形式のURLをチェックします。
http://www.yoursite.com/archives/99/something-else
iD = 99のpost/page/cptとして解釈します。もちろん、正規表現はあなたが好きなものなら何でも構いません...
申し訳ありませんが、これらすべてが私を深い悩みの種にしました。タグとカテゴリのURLが突然機能しなくなり、「これは恥ずかしい」という空の検索ページが表示されます。
Anyrulesを追加せずにフラッシュすることによって引き起こされる中立で変化しないコールバックでさえも*/archives/tag/kiwis */archives/categories/fruitsのようなものを壊すでしょう。
すべて削除して/wp-admin/options-permalink.php(数値設定)を保存すると、もう一度修正されます。繰り返します。非常に検証済みwordpress.orgの このスレッド もご覧ください。
基本的に、一日を過ごすと、私はうまくいくように見える非常に単純なハックを思い付きました。これを.htaccesのwordpressブロックの前に追加する
RewriteRule ^archives/(\d{1,12})(?:/.*) archives/$1 [NC,L]
これを私のテーマのfunctions.phpに追加してください。直接。フックはありません。
if ( isset($_SERVER["REDIRECT_URL"]) )
$_SERVER["REQUEST_URI"] = $_SERVER["REDIRECT_URL"];
うん、かなり汚い、$ _ SERVER変数への書き込み。さて、私のテストケースはすべてうまくいきます(単純なURL、ランダムなURL、タグ、カテゴリなど)(nb:開始ページがうまく動作しなくなった場合を除いて(終わりのないリダイレクトループ)