web-dev-qa-db-ja.com

設定を保存した後のhtaccessの問題

WordPressに非常に奇妙な問題があります。私はDuplicatorプラグインを使ってあるドメインから別のドメインへウェブサイトを移しました。

すべてうまく機能しますが、設定を変更して保存した後、Webサイトまたは個々のページに移動すると、このページがコンピュータにダウンロードされます。

たとえば、そのページにアクセスした後に自分のWebサイトがexample.comである場合、ファイルはexample.comという名前で自分のコンピュータにダウンロードされます(.comはファイルの拡張子です)。

.htaccesファイルを削除すれば、再びメインページにアクセスできますが、他のパーマリンクは機能しません。

私はWordpressのWebページで与えられたデフォルトのもので.htaccesを変更しようとしました、そして私が設定で何かを変えて、それを再び保存するまで、すべてうまくいきます。

Wp-admin/update-core.phpでWordpressを再インストールしてみました。すべてが再インストールでうまくいったが、問題はまだここにある。

設定を保存した後、私のhtaccessは1行を除いて同じままです:

AddHandler application/x-httpd-php70 .php

これは冒頭に追加されています:

# BEGIN WordPress
AddHandler application/x-httpd-php70 .php
<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

その行を手動で削除した後は、設定を再度保存するまで、すべてうまくいきます。参考までに、私の現在のphpバージョンは7.1です。私はcPanelでそれを7.0に変更しようとしました、しかしそれも助けにはなりませんでした。

誰がこれが何であり、そしてそれをどのように解決することができるかについての考えを持っていますか?

5
eklisiarh

わかりました私はこれを考え出し、私は他の誰かがこの問題を経験した場合だけのために答えを提供しています。

問題は、Mojo Marketplaceを介して行われたWordpressの最初の自動インストールで使用されていたプラグインにありました。

プラグインの名前はEndurance PHP Edgeで、通常のプラグインフォルダーにはなかったため無効にできませんでした。このプラグインは、保存後にhtaccessファイルにPhPのバージョンを設定するために使用されます。それはこのように見えます:

    if ( ! defined( 'WPINC' ) ) { die; }

define( 'EPE_VERSION', 0.1 );

if ( ! class_exists( 'Endurance_PHP_Edge' ) ) {
    class Endurance_PHP_Edge {
        function __construct() {
            $this->hooks();
        }

        function hooks() {
            add_filter( 'mod_rewrite_rules', array( $this, 'htaccess_contents' ), 99 );
        }

        function htaccess_contents( $rules ) {
            if ( file_exists( '/opt/cpanel/ea-php70/root/usr/bin/php-cgi' ) ) {
                $default_handler = 'application/x-httpd-ea-php70';
            } else {
                $default_handler = 'application/x-httpd-php70';
            }

            $handler = get_option( 'epe_php_handler', $default_handler );
            $handler = 'AddHandler ' . $handler . ' .php' . "\n";
            return $handler . $rules;
        }
    }
    $ebc = new Endurance_PHP_Edge;
}

これが私の.htaccessファイルにその行を追加していました。

なぜこの行がすべてのページをダウンロードさせるのか私の理解を超えています。

解決策は、 wp-content フォルダーの中にある mu-plugins フォルダーを単に削除することでした。

6
eklisiarh