web-dev-qa-db-ja.com

投稿を修正(更新)できません - ページが見つかりません

数日間、私は私の投稿のいくつかを修正することに関する問題を経験している。投稿の内容を変更しようとすると404エラーが発生し、そのページが見つからないことをリダイレクトします。

すべての基本的なテスト、キャッシュのクリア、ブラウザ、プラグインの有効化/無効化、パーマリンクの変更などでGoogleの調査を行っているところ、WPフォーラムで、ApacheのModSecurityと言っています。が問題を引き起こしています:

https://wordpress.org/support/topic/clicking-the-post-draft-button-sometimes-redirects-a-404-not-found-page/

https://wordpress.org/support/topic/404-page-not-found-when-savingupdating-a-postspage/

しかし、Cpanelではホスティング会社から無効にするModSecurity - を無効にするオプションを選択していないため、これは私にとってはうまくいきません。

私は彼らからこの返事をもらった。

Mod_secは重要なサーバーレベルのセキュリティ機能です。 mod_secを無効にするつもりはありません。

特定のWordPress投稿(SQLインジェクション攻撃のように見える投稿など)はmod_secをトリガーする可能性がありますが、確かにすべてのWordPress投稿ではありません。

これを解決するための回避策はありますか?私はSSHアクセスを持っています。

また、私は100%確信があるわけではありません - しかし私は私が私の古い記事を更新することができることに気付きました。

5〜6メートル前の投稿では404エラーが発生しています。 WPバージョンは4.7.2です

編集

私が今持っている唯一のオプションは、本番サイトのバックアップを作成し、私のlocahostにロードし、投稿を更新し、それを本番にプッシュバックすることです。

しかし、これはまったく便利ではありません。誰もが解決策を持っていますか?

助けてください!ありがとうございます。

2
fugitive

リモートのMySQLにアクセスできる場合は、これが役立ちます。私は私のホスティングプロバイダに別の問題があったときに私はしばらく前にこれをやった。

データベースではなく、WordPressファイルのフルバックアップを取ります。それらをあなたのローカルホストにコピーしてください。 wp-config.phpファイルで、ローカルデータベースを使用するのではなく、データベースをオンラインWebサイトのリモートデータベースに設定します(明らかに最初にバックアップを作成します)。

define('DB_Host', 'YOUR REMOTE DATABASE');

それでは、これらをwp-config.phpで定義して、ローカルインストールでローカルURLをサイトURLとサイトアドレスとして使用するように強制します。

define('WP_SITEURL', 'http://localhost/');

define( 'WP_HOME', 'http://localhost/' );

これで、ローカルのApache Webサーバーでmod_secを無効にして投稿を更新することができます。

PS: /私はこれをmod_secで試していなかった、そして私はこれがあなたのために働くことを保証しない。これが正式に確認されたかどうかさえわかりませんが、私はこれを自分で行って作業したので、それをあなたと共有することを考えました(コメントとして投稿するには長すぎたので)。安全かどうかさえわかりません。

ただし、ハードコードされたURLとアップロードについては注意してください。localhostでファイルをアップロードしようとすると、これらが問題を引き起こす可能性があるためです。しかし、コンテンツ自体を変更しても問題は発生しません。

PS 2 あなたのマイナス投票に気をつけてください。それはよりサイエンスフィクションのプロジェクトのように見えるかもしれませんが、それは個人的に私のために働いたので、私はこれが決してうまくいかないと私に言う人を受け入れることができません。

2
Jack Johansson

私からの保証された解決策はありませんが、いくつかのポイントが解決策に向かってあなたを助けるかもしれません。

1:.htaccessファイルを再確認してください。その下にコードを貼り付けます。

# 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

2:databaseでエラーをチェックし、db repairtable optimizationを実行してください

3:ディレクトリとファイルのパーミッションを変更し、しばらくの間755775、さらには777に変更してみてください。また、htaccessファイルのアクセス権を777に少しの間変更してください。

4:投稿編集画面のURLを再確認し、URLが以下のようになっていることを確認してください。

http://yourdomain.com/wp-admin/post.php?post=1&action=edit

post=1post IDで、actionの値はeditと等しくなければなりません。

5:パーマリンクの構造は設定から​​変更されたと思います。それはとても基本的なことでフロントエンドのために働きますが、それらをNumericに変更してみてください。

6:WordPressのコアファイルやファイル名を変更していないことを確認してください。

7:WordPressはsave_postという名前のアクションフックを提供しています。これを使用して投稿データを明確にすることができます。もっと調べる ここ

8:最後に、コアの[WP]バージョンを古いバージョンに戻すことでうまくいく可能性がありますか?

3
Anwer AR

管理パネルに行き、パーマリンクをリセットしてください

0
Vinnie James

通常、ホスティング会社はホスティングアカウントに影響を与えている可能性のある特定のmod_securityルールを無効にすることができます。私は前にこの問題に遭遇しました、それは通常問題を引き起こすプラグインです。

プラグインを無効にして、投稿をもう一度更新してみますか?

0
bobbyjoe