[WordPress] “注文拒否、許可”書き換えルール後ときだけ動作ですか?

スポンサーリンク

質問

私はワードプレスのサイトへのアクセスを一時的にブロックする、.htaccess ファイルに

order deny,allow

を追加がある:

RewriteEngine off
order deny,allow
deny from all
allow from [my ip]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

しかし、それは動作しませんでした

書き換えルールの下にそれを移動してみました:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

RewriteEngine off
order deny,allow
deny from all
allow from [my ip]

と作業開始です

なぜそれ最初の例では動作しませんか?

答え

ワードプレスの htaccess をこのコメント:

# BEGIN WordPress
# END WordPress

ワードプレスによってルールを動的に追加するために使用します。ある場合は

wp-admin/includes/misc.php

に見て、という名前の関数

save_mod_rewrite_rules

あなたの htaccess ファイルの書き込みを処理します。この関数は、

WP_Rewrite

mod_rewrite_rules

メソッドからルールを取得、内部クラスは、

wp-includes/rewrite.php

に位置します。端にその行が表示される場合は、そのメソッドに見て:

$rules = apply_filters( 'mod_rewrite_rules', $rules );

それを意味するフィルターをルールに適用するので、どのようなプラグイン/テーマは彼を追加するには、このルールをオーバーライドできますを所有し、アクセス ポリシーの追加。多分 WP のコアは、彼自身の拒否/許可規則を追加します。ここにあなたの問題は多分これが

allow, deny

規則に代わる解決策は、

RewriteCond

を使用して、すべての ip 以外、403 をスローする、(あなたの htaccess の上にこれを置く):

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REMOTE_ADDR} !^[your IP]$
    RewriteRule ^(.*)$ - [R=403,L]
</IfModule>

http://stackoverflow.com/questions/32441153/order-deny-allow-only-works-when-after-rewrite-rules

スポンサーリンク

Leave a Reply