別のアプリが同じディレクトリで実行されるように、Wordpress の .htaccess ファイルにいくつかの変更を加えました (以下を参照)。ご覧のとおり、他のアプリのコントローラーへの特定の要求を無視するように WP リライトに指示する RewriteCond をいくつか挿入します。
もう 1 つのルールを追加しただけで (以下にコメントされています)、2 つのローカル開発環境 (1 つの MAMP ともう 1 つの XAMP) で期待どおりに動作します。しかし、それを本番サーバーにプッシュすると、新しいルールは何の効果もないように見えます。新しいディレクトリ (/app/resumes/stamped/123.pdf) 内のファイルに移動する代わりに、Wordpress の「これは恥ずかしい」というメッセージが表示され、リクエストがまだ Wordpress を介してルーティングされていることが示されます。
mod_rewrite は確実に機能しておりAllowOverride All
、本番環境で設定されています。これを本番環境で機能させるために、他に何を確認できますか?
私にとって最も奇妙な部分は、OTHER RewriteCond
DO が機能することです。そのため、なぜこの 1 つの新しい行だけが本番環境でこれほど異なる動作をする必要があるのか、本当に困惑しています。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
###This is the new rule
RewriteCond %{REQUEST_URI} !/app/resumes/stamped/
RewriteCond %{REQUEST_URI} !^/admin
RewriteCond %{REQUEST_URI} !^/pages
RewriteCond %{REQUEST_URI} !^/tests
RewriteCond %{REQUEST_URI} !^/users
RewriteCond %{REQUEST_URI} !^/css/
RewriteCond %{REQUEST_URI} !^/js/
RewriteCond %{REQUEST_URI} !^/img/
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
アップデート
これは /app の .htaccess にあるものです
RewriteEngine on
RewriteBase /app/
#This is new too
RewriteCond %{REQUEST_URI} ^/resumes/stamped/
RewriteRule (.*) webroot/$1 [L]
更新 2 /stamped ディレクトリの .htaccess ファイルに必要なユーザー名/パスワード認証 (必要なヘッダーを手動で追加するために Chrome の REST 拡張機能を使用しています) で送信されたリクエストが成功することがわかりました。つまり、基本的には動作していますが、他のすべてのサーバーでこれを行うため、ユーザー名/パスワードの入力を求めるプロンプトが表示されることを期待しているため、わかりません。本当の問題は、認証プロンプト (またはそのプロンプトがない) によって、なぜこのサーバーの Wordpress の 404 ページに到達するのかということです。
アップデート 3
これは .../stamped の htaccess ファイルです
AuthType Basic
AuthName "restricted area"
AuthUserFile /home/username/public_html/.htpasswd
require valid-user
もちろん、.htpasswd ファイルへのパスは開発と運用で異なります。