WordPressのURLと同じディレクトリが存在する場合の対策

WordPress Tips

現象

WordPressのURLに含まれる文字列と同じディレクトリが存在する場合、ディレクトリが優先されてしまうため該当ページが存在しないというエラー(403)扱いなる場合があります。
【例】
URL: https://sample.com/abcde/
ディレクトリ: /abcde/
上記の例では「abcde」が一致する。

対策

WordPressのURLとディレクトリを一致させない環境を構築することが許諾されるのであれば問題ないのですが、そうでない場合は以下の4つの方法で解決できる場合があります。

方法

  1. WordPressへの制御移行のための index.php の設置

    対象となるディレクトリすべてに以下のファイルを設置します。

    .htaccess

                DirectoryIndex index.php index.htm index.html index.cgi
            

    index.php

                
            

    上記はドキュメントルートに/wordpress/というディレクトリにWordPress本体が格納されている環境下で、ドキュメントルート直下のディレクトリに設定する例です。ディレクトリ階層に従って相対レベルを変更してください。

  2. リダイレクトループが発生する場合

    functions.php に以下を記述してください。

        	remove_filter('template_redirect', 'redirect_canonical');
            
  3. 下層ページのリダイレクト

    .htaccessの冒頭部に以下を記述してください。これは通常のリダイレクト処理です。

            	Redirect permanent /work/xxxxx.html https://sample.com/work
            
  4. トップページのリダイレクト

    トップページ https://sample.com/index.html のリダイレクトは.htaccessで処理するとリダイレクトループが発生して厄介です。WordPress(php)に処理させるために functions.php に以下を記述してください。

    
            // https://sample.com/index.html の「index.html」部分を取得
        	$strRequest = trim($_SERVER['REQUEST_URI'],'/');
    
        	// URIとリダイレクト先の対応表
        	$arrayRedirect = array(
        		'index.html' 	=> 'https://sample.com/',
        	);
    
        	// 対応表に存在すれば301リダイレクト実行
        	if(array_key_exists($strRequest,$arrayRedirect)){
        		header("HTTP/1.1 301 Moved Permanently");
        		header('Location: '.$arrayRedirect[$strRequest]);
        		exit;
        	}
            

弊社サイトご案内

(WordPress化と同時に対応できます)

ブロックエディタ対応サービス

ブロックエディタ導入で、コンテンツの編集や追加が容易に安全に達成可能!
サイトのコンテンツ保守費用0円化に大貢献!

PHP8アップデートサービス

PHP8にアップデートしてWordPressの実行速度向上・セキュリティ向上に!

関連記事一覧

わぷー WordPress化お見積り