ワードプレスが404エラーで上書きするため、非ワードプレスサブディレクトリにアクセスできません


34

以前に尋ねられ、適切に回答されていないこの質問を参照してください: Wordpressが実際のサブディレクトリオーバーライドし「Wordpress」以外のページ/コードが404エラーを取得する

私は同じ問題を抱えており、ネットで見つけたほぼすべてのものを試しました。それは間違いなく、ワードプレスでパーマリンクを有効にすることに関連しています。ただし、次のサブディレクトリに新しい.htaccessファイルを配置しました。

RewriteEngine off

そして、問題はまだ存在しています。wordpress .htaccessファイルを完全に削除しても、問題は解決しません。

私はまた、のErrorDocument 401「不正アクセス」とのErrorDocument 404「不正アクセス」のようないくつかの他の提案の解決策を試み、リダイレクト301 / mysubdirectoryたhttp://www.mydomain.com/mysubdirectory/index.html 全て無駄に様々な場所に。

誰かが別のソリューションを提供できますか?修正できる唯一の方法は、パーマリンクをオフにすることですが、パーマリンクをオンにする必要があります。

おかげで、

ニコール


WordPressのルートフォルダーでindex.phpの名前をindex.bakに変更するとどうなりますか?ディレクトリにはまだアクセスできませんか?
-Horttcore

サブフォルダー.htaccessのベースURLを再定義しようとしましたか(値のサブフォルダーを使用)?
セドリックG

回答:


28

WordPressをサイトのルートに配置し、外部ディレクトリもサイトのルートにあると想定しています。これが発生する理由は、.htaccessファイルが階層に従っているためです。最上位の.htaccessファイルにあるディレクティブはすべて下に流れ、その下のすべてのディレクトリに適用されます。

この場合、次のいずれかを実行できます。

  1. WordPressを独自のディレクトリに移動します。参照:http : //codex.wordpress.org/Moving_WordPress WordPressを独自のディレクトリに移動して、サーバーのディレクトリ階層内で他のディレクトリと同じレベルにある場合、WordPressの書き換えルールは他のディレクトリに影響しません。

  2. RewriteEngine Off-これは通常機能します。動作しない場合は、ワイルドカードDNS設定を使用していないことを確認してください。DNS設定でWebサーバーを指すワイルドカード*ホスト名レコードがある場合、.htaccessとサブドメインで大混乱を引き起こす可能性があります。

  3. サイトルートの.htaccessファイルに、WordPressの.htaccessディレクティブの上に次を追加します。

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^/subdirectoryname1/(.*)$ [OR]
    RewriteCond %{REQUEST_URI} ^/subdirectoryname2/(.*)$ [OR]
    RewriteRule ^.*$ - [L]
    </IfModule>

これらのいずれかが動作するはずです。


17

これは過去に私にとって同様の状況で機能しました:

これを上に置きます .htaccess

ErrorDocument 401 default

2
ありがとう!私は非常に多くのことを試してみましたが、これは私の場合に有効な唯一のソリューションです:パスワードで保護されたサブディレクトリ
ラドー

2
私のために働いた、それが何をするのか、それがなぜ機能するのかについての説明はありますか?
アサフ

これは私のために動作します..ワードプレスを使用するのではなく、OpenCartを使用し、同じ問題を抱えています。説明は本当に役立つでしょう。
ビリーノア14

4

ファイルを同じサーバーにコピーしますが、サブディレクトリフォルダーが異なるため、ページにアクセスしようとすると、index.phpは正常に動作しますが、他のページは正常に動作せず、404エラーが発生します。悪い英語でごめんなさい!!

私は元のhtaccessを調べます:

#WordPressを開始

RewriteEngine On
RewriteBase /
RewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteRule。/index.php [L]

#エンドワードプレス

そして、新しいものを入れて

#WordPressを開始

RewriteEngine On
RewriteBase / subdirectoryfolder
RewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteRule。/subdirectoryfolder/index.php [L]

#エンドワードプレス

こんにちは@lizette。WPSEフォーラムへようこそ。ここでフォーマットの仕組みを確認することをお勧めします。
ポチカリムトゥ

4

このスレッドは数か月前のものですが、万が一動作しない場合があります。

私は同様の問題を抱えていましたが、私の問題はワードプレスのインストールがサブディレクトリにあり、それがパーマリンクが有効になっている場合にのみルート内のフォルダへのURLアクセスを妨げていたことでした。これを解決するために、WPインストールがあるサブディレクトリからindex.phpと.htaccess(コピーしない)の両方をコピーし、両方をルートpublic_html(またはWPインストール外でアクセスしようとするサブディレクトリ)に配置しましたディレクトリ)。.htaccessファイルには、パーマリンクの書き換え条件が既にあります。

RewriteEngine On
RewriteBase /subdirectoryinstallfolder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

更新のためにパーマリンクを有効にすると、すべての問題が解決しました。ルートフォルダーのアクセス許可も正しく設定されていることを確認してください。これにより、過去に問題が発生していました。


3

htaccessを無効にしたまま404を取得し、パスを確認し、ファイルがあることがわかっている場合、残っているオプションはこれら3つだけです...

オプション...

  1. サーバーは、大文字と小文字を区別するオペレーティングシステムを実行している可能性があります。つまり、パスを入力するときに、正確な文字と大文字小文字を使用しないと、機能しません。
  2. 許可:ファイルまたはフォルダー、または親フォルダーに対する誤った許可を持っている可能性があります。ファイル、フォルダー、および親フォルダーのアクセス許可を755に変更してください。ssh(端末)にアクセスできる場合は、ルートに移動してこの「chmod -R 755 mydir」を実行すると、すべてのアクセス許可が再帰的に設定されます。
  3. それでも問題が解決しない場合は、サーバー構成に問題があります(おそらくApache)。ホスティングプロバイダーに相談する必要があります。

いずれも機能しない場合は、新しいホストが必要です。


2

htaccessを編集して髪の毛をほぼ摘み取った後、ついにWordPressで機能するソリューションを見つけました。

WordPressがインストールされているのと同じルートディレクトリにcodeiginterスクリプトをインストールした後に、この問題が発生しました。

ここにリストされているすべてのトリックを試しても、新しいスクリプトに関連付けられたページで404エラーが発生していました。

WordPressのhtaccessがスクリプトのhtaccessをオーバーライドしていることに気付きました。また、同じディレクトリ内の他のWordPressインストールには、この404エラーがなかったことにも注意しました。

同じサーバーディレクトリの新しいWordPressインストールからhtaccessを採用し、スクリプトが置かれているフォルダーに追加しました。これがどのように見えるかです:

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

subdirectorynameディレクトリの名前に置き換え、このhtaccessファイルをスクリプトが置かれているフォルダ内に配置します。

例:サイトがここにインストールされている場合

public_html/

新しいフォルダーがあります

`public_html/example`

上記のhtaccessをコピーして、フォルダ「example」内に保存すると、これが機能するはずです。


1

同様の問題に遭遇したときに、ここで何度も応答を見てきました。サブディレクトリにあるファイルにアクセスしようとすると404エラーがスローされます。Kirhtten Douglasが言うように、Wordpressはすでに仕事をしているので、すべての.htaccessのものは修正に失敗しました。

私の解決策

サーバーでerror_logを確認した後、この記事を見つけました。スクリプトのuidが間違っているというメッセージが表示されました。また、ファイルが原因で404がスローされなかったことにも気付きましたが、サーバーが500.htmlファイルを提供できなかったため、500エラーが発生しました。

ルートとしてファイルを作成し、所有権をwebfiles所有者に変更する必要があることがわかりました。

これが同じ問題を抱えている他の人に役立つことを願っています!


0

RewriteCondサブフォルダー内のリクエストに対してWordPressルールが無視されることを確認するディレクティブを追加することができます。

RewriteCond %{REQUEST_URI} !^/mysubdirectory
# rest of WordPress rewrite rules

ただし、WordPress がなくても.htaccess問題が発生していると言いますか?サブディレクトリの内容は何.htaccessですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.