functions.php
にカスタムの書き換え規則を追加したり、カスタムのパーマ構造を追加してもうまくいきません。私はこのコードを.htaccess
に持っています。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# BEGIN IPHONE RULES
RewriteRule ^mobile/([^/]+)$ mobile/index.php?action=$1 [QSA,L]
# END IPHONE RULES
# BEGIN PDF RULES
RewriteRule ^certificates/30-Days-Certificate-([0-9]+)$ pdf/index.php?type=30day&period=$1 [QSA,L]
RewriteRule ^certificates/12-Month-Certificate$ pdf/index.php?type=12Month [QSA,L]
# END PDF RULES
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
しかし、時々デフォルトに更新され、iPhoneとpdfのルールを失います。モバイルは/mobile/progress?userId=22&date=2011-02-21
のように呼ばれます。ここでprogress
はアクションで、他のものは単なるquery varsです。 .htaccess
はうまく機能していますが、カスタムルールを追加してうまく機能させることはできません。任意の助けは大歓迎です。
# BEGIN WordPress
と# END WordPress
の間の部分は、パーマリンクがフラッシュされたときに常に書き換えられます。このセグメントの前に追加の書き換え規則を配置するか、または 外部書き換え規則 としてWordPressに登録することができます。 ( パーマリンク ページにアクセスして)今すぐルールをフラッシュすると、追加のルールが.htaccess
ファイルに追加されます。
add_action( 'init', 'wpse12708_init' );
function wpse12708_init()
{
global $wp_rewrite;
$wp_rewrite->add_external_rule( 'mobile/([^/]+)$', 'mobile/index.php?action=$1' );
$wp_rewrite->add_external_rule( 'certificates/30-Days-Certificate-([0-9]+)$', 'pdf/index.php?type=30day&period=$1' );
$wp_rewrite->add_external_rule( 'certificates/12-Month-Certificate$', 'pdf/index.php?type=12Month' );
}