私はNginxが初めてで、WordPressサイト用に持っている次のルールをApacheからNginxに変換しようとしています. Nginx 1.4.6 を実行している Ubuntu マシンで、デフォルトの Nginx 構成から始めています。
RewriteCond %{REQUEST_URI} !^/wp-content/themes/path/to/exclude/file\.php
RewriteRule wp-content/themes/(.*\.php)$ log.php?f=$1 [L]
上記のルールは、ルールで定義されたファイルを除いて、すべてのリクエストをwp-content/themes/*.php
に書き換えます。security-log.php
RewriteCond
私が集めたものから、Nginx でこれを行う方法は、location
ブロックを使用することです。次のことを試しました(特定のファイル/フォルダーを除外するために何をすべきかまだわかりません)。
location = /wp-content/plugins/(.*\.php)$ {
try_files /security-log.php =404;
}
上記のルールは完全に無視されているようです (正規表現に何か問題があるのでしょうか?)。
次のように固定パスを指定すると、ルールが呼び出されますが、Nginx は PHP インタープリターを使用して実行するのではなく、PHP ファイルを提供します (ブラウザーはファイルをダウンロードします) (ほとんどの場合、これはfast-cgi
呼び出されていないためです)。
location = /wp-content/plugins/test.php {
try_files /security-log.php =404;
}
これを達成するための最良の方法は何ですか?