次のような構造になっています
www/
.htaccess
/website1
/website2
/uploads/foo.pdf
/websiteWP
.htaccess
ルート内の.htacces
(www/.htaccess)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_Host} ^(www.)?foo.com$
RewriteCond %{REQUEST_URI} !^/website1/
RewriteCond %{REQUEST_URI} !^/website2/
RewriteCond %{REQUEST_URI} !^/uploads/
RewriteCond %{REQUEST_URI} !^/websiteWP/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /websiteWP/$1
RewriteCond %{HTTP_Host} ^(www.)?foo.com$
RewriteRule ^(/)?$ websiteWP/index.php [L]
</IfModule>
ワードプレスインストールの.htacces
(www/websiteWP/.htaccess)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Wordpressの内部で、リンク https://www.foo.com/uploads/some-pdf.pdf をクリックすると、読み込みページが無限に表示されます。コンテンツを読み込もうとしている(この反応はテーマによるものです。他のユーザーは404を使用できると思います)、または半分のワードプレスと半分の "埋め込まれた"リモートページを組み合わせることがあります。
しかし、Webサイトの外側からPDFにアクセスすると(検索ボックスに貼り付けると)うまくいきます。
注:
WordpressのURL: https://www.foo.com/websiteWP
ウェブサイトのURL: https://www.foo.com
.htaccess
の失敗を見つけることができません。
Stackoverflowおよびwordpress stackexchangeで利用可能なすべてのスレッドをすでに確認しています。
あなたがあなたの投稿した.htaccess
ファイルから、あなたがあなたのWordPressインストールの外で(/websiteWP
サブディレクトリの中で)ファイル/フォルダーにアクセスできない理由は明らかではありません。実際、物理ファイルにアクセスするために特定の例外を追加する必要はありません。これらのディレクティブは物理ファイルには適用されるべきではないからです。
しかし、あなたの.htaccess
ファイルの設定が間違っています...
WordPressのインストールが/websiteWP
ディレクトリにある場合、(あなたのWordPressインストールのルートにある)/websiteWP/.htaccess
ファイルはすべてのリクエストを/index.php
にルーティングしているので間違っています - これはドキュメントルートのindex.php
ファイルです(これは親ディレクトリです)同じディレクトリにあるべきWordPressフロントコントローラではありません。 /websiteWP/index.php
).
しかし、私は/index.php
(ドキュメントルートにあります)が存在しないと仮定します(さもなければあなたのWordPressサイトは機能しないでしょう)。ルートの.htaccess
ファイルの.htaccess
ディレクティブは、リクエストをWordPressフロントコントローラーの/websiteWP/index.php
に書き換えます。これは余分な作業であり、不要です。
/websiteWP/.htaccess
ファイルを次のように変更してください。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
注RewriteBase
ディレクティブを削除し、RewriteRule
置換のスラッシュ接頭部を削除し、/index.php
(root-relative)をindex.php
(relative)に変更しました。
その場合、ルートの.htaccess
ファイルはまったく必要ありません。