• 解決済 mint_rock

    (@mint_rock)


    パーマリンク設定のカスタム構造で拡張子をphpにすると「404 Not Found」になります。

    パーマリンク設定のカスタム構造
    http://hogehoge.com/「%post_id%.html」
    と設定すると投稿ページを見ることができるのですが、

    パーマリンク設定のカスタム構造
    http://hogehoge.com/「%post_id%.php」
    と設定すると「404 Not Found」になります。

    どのように設定したらいいのでしょうか。

    ■環境
    WordPress3.7.1 をネットワーク設定し、マルチドメイン、サブドメインで運用中。
    今回はメインドメインで設定したがエラーとなっている。(他のドメインでもエラー)
    PHP: 5.3.15
    MySQL: 5.6.11
    サーバー:ロリポップ(チカッパプラン)、ロリポプランでもダメでした。

    ■目的
    以前使用していたMovableTypeで作成されたWebサイトの拡張子がphp
    それらのWebサイトをURLを変更しないまま、WP化したい。
    →なので、どうしても拡張子phpで設定したい。

    301リダイレクト設定も考えましたが、できるなら外見何もなかったかのように移行したい。
    他のサイトで拡張子を設定するのは今や無意味とされているのは聞いていますが、どうしても設定したいです。

    よろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • 천궁 메텔

    (@digitmaetel)

    「.htaccess」を確認して下さい
    AddType application/x-httpd-php .php .html

    トピック投稿者 mint_rock

    (@mint_rock)

    【未だ未解決】
    digit@maetelさんご返信ありがとうございます。

    「.htaccess」にAddType application/x-httpd-php .php .html記載しアップロードしましたが、「404 Not Found」になります。(完全リロード済前提)

    アドバイスいただいた
    .htaccess
    AddType application/x-httpd-php .php .html

    を元に検索して調べてみたところ

    やりたいことは
    「PHPを拡張子 .html で動作させたい時」
    に該当し、サーバーによって記述が異なるとのこと

    一般のサーバー
    AddType application/x-httpd-php .php .html
    エックスサーバー等の場合
    AddHandler x-httpd-php .html
    ヘテムル、ロリポップ等の場合
    AddHandler php4-script .html(PHP4 を利用したい場合)
    AddHandler php5-script .html(PHP5.2 を利用したい場合)
    AddHandler php5.3-script .html(PHP5.3 を利用したい場合)

    となるらしく、AddHandler php5.3-script .htmlと記述するが
    「404 Not Found」のままでした。

    また他に調べると、以下の設定が必要との記載もあり、設定してみるも
    「404 Not Found」のままでした。

    【ロリポップサーバーでの設定】

    左側メニューのWEBツール→PHP設定→対象ドメインの設定変更へボタン
    →short_open_tagをoffに変更→php.iniを設定するボタンを押し
    設定変更を確定する

    ■現在の「.htaccess」の内容■

    RewriteEngine On
    
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    
    # add a trailing slash to /wp-admin
    RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
    RewriteRule ^(.*\.php)$ $1 [L]
    RewriteRule . index.php [L]
    
    AddHandler php5.3-script .html .htm

    AddHandler php5.3-script .html .htmを1行目に記載しても状況変わらずでした。

    このファイルをUTF-8で保存。
    インストールのトップディレクトリにアップロード
    パーミッションサーバー指定の604に設定。

    ご教授いただければ幸いです。
    よろしくお願いします。

    私も同じエラーで困っておりましたが、
    下記の方法で、なおりましたので、一度お試しください。

    ちなみに、404エラーが出力されるとありますが、この404エラーは、
    wordpress側で出力される404エラーではないと思いますが、どうでしょうか?

    私の場合は、サーバー側の404エラーが表示されていたので、Wordpressの処理前にエラーになっていると分かりましたので、サーバー側の設定だと気づきました。

    対処方法ですが、
    htaccessの
    RewriteRule ^(.*\.php)$ $1 [L]
    の部分を削除すると、正常に動くと思います。

    意味はよく分かりませんが、拡張子phpのRewriteruleが設定されているので、
    この部分をなくすと、正常に動くようです。

    お試しください。

    トピック投稿者 mint_rock

    (@mint_rock)

    muyansoapさんありがとうございます!!

    解決しました!!
    問題なく表示されました。

    【まとめ】
    ■問題
    パーマリンク設定のカスタム構造で拡張子をphpにすると「404 Not Found」
    (wordpressの404ではなく、サーバー側の404)
    ■環境
    PHP: 5.3.15
    MySQL: 5.6.11
    サーバー:ロリポップ(チカッパプラン)
    ■解決策
    .htaccessのRewriteRule ^(.*\.php)$ $1 [L]を削除
    サーバーアップロード。

    RewriteEngine On
    
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    
    # add a trailing slash to /wp-admin
    RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
    RewriteRule ^(.*\.php)$ $1 [L]←ここを削除
    RewriteRule . index.php [L]
    RewriteEngine On
    
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    
    # add a trailing slash to /wp-admin
    RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
    
    RewriteRule . index.php [L]

    これで問題なく表示されました。
    削除による悪影響は今のところでてません。

    ありがとうございました!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「パーマリンク設定のカスタム構造で拡張子をphpにすると「404 Not Found」」には新たに返信することはできません。