私のApache設定では、次の設定があります
<Directory "/opt/website/new-website-old/httpdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Location /server-status>
#AllowOverride None
SetHandler server-status
Order deny,allow
Deny from all
Allow from all
</Location>
これを使用すると、server-statusは機能しますが、allowoverrideオプションをすべてに変更しても機能しません。 allowoverrideオプションがAll
私はこれに従いましたが、それでも運がありません ワードプレスサーバーのステータス
私の現在のhtアクセスファイルには
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_Host} ^www.asb.com.au$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/about/the-group/domain-asb$1 [R=301,L]
</IfModule>
# 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
まず、ロケーションブロックで次のものを使用していることに混乱しています。おそらくすべてを拒否したいと思うかもしれませんが、おそらく自分のIPからは許可しますが、私は逸脱します。
Deny from all
Allow from all
あなたが投稿したガイドからあなたが見逃した最も重要なことは次の行でした:
RewriteCond %{REQUEST_URI} !=/server-status
これにより、.htaccessファイルは次のようになります。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
その上、.htaccessには2つの別々の書き換えブロックがあり、ほぼ同じであるようです。それらを1つに組み合わせて、.htaccessの最終的な内容を(他には何も)しません。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_Host} ^www.asb.com.au$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/about/the-group/domain-asb$1 [R=301,L]
</IfModule>
もう少し詳しく説明しますが、AllowOverrideをnoneに設定すると、Apacheは.htaccessファイルを完全に無視するため、allに設定すると、.htaccessの何かが/ server-statusの機能をオーバーライドしていることがわかります。サーバーステータスハンドラーによって処理されます。 .htaccessファイルでは、問題のある行は基本的に次のとおりです。
RewriteRule . /index.php [L]
これは、Apacheにすべてを書き直してindex.phpに送信するように指示しているためです。これは、wordpressがindex.phpを介してすべてを処理し、とりわけSEOURLを許可するためです。
追加した行:
RewriteCond %{REQUEST_URI} !=/server-status
URIが/ server-statusでない限り、上記のことを実行するようにApacheに指示します(RewriteRuleに基づいてすべてをindex.phpに書き換えます)。これは、書き換えられてwordpress index.phpの場合、ハンドラーは期待どおりに動作できるはずです。
他の2つの条件
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
ご存知のとおり、リクエストが実際のファイルまたは実際のフォルダである場合は、URLを書き換えないようにApacheに指示してください。
Mod_Rewriteの詳細については、 公式ドキュメント を参照してください。
サーバーステータスページをWordpress書き換えルールで機能させる最も簡単な方法は、Wordpressフォルダーにserver-status
という名前のフォルダーまたはファイルを作成することです。
これは、(WerkkreWが指摘しているように)ルールが次の理由で機能します。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
同じ名前のファイルまたはディレクトリがある場合は、書き換えを行わないでください。