サポート » 使い方全般 » 固定ページにパーマリンクを設定し、各ページに個別URLを持たせる

  • 解決済 Eco

    (@eco)


    Ecoと申します。こちらのフォーラムではいつも勉強させていただいております。
    固定ページのパーマリンクを、各ページの個別URLとして扱う方法について調べており、
    既出のトピックがないか探しましたが、見つからなかったため、書き込ませていただきました。

    現在、以下の環境で、ブログではなく普通の企業サイトを構築しようと考えております。

    WordPress2.9.2日本語版
    プラグイン: デフォルト状態
    サーバ: NTTPCのSuiteX(Linux)
    Webサーバ: Apache

    サイト内のいずれのページも時系列の管理が不要なため、固定ページとしました。
    その中で、例えば、

    当社のサービス(service/) – サービス詳細(detail)
                  – 価格(price)

    ※タイトル(スラッグ)
    という固定ページを作成し、それらにスラッグをつけた場合、

    http://example.com/service/
    http://example.com/service/detail/
    http://example.com/service/price/

    というURLとして各ページを表示させたいと考え、「パーマリンク設定」にて、

    カスタム構造 : /%category%/%category%/

    という設定を行いました。

    しかしながら、上述の「http://example.com/service/」は表示できるものの、
    「http://example.com/service/detail/」および「http://example.com/service/price/」は
    404 Not Foundとなります。
    (このときの404は、WordPressのものであり、Apacheやサーバのものではありません)

    .htaccessはWordPressによって作成され、以下のような記述です。

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    # END WordPress

    私は固定ページをディレクトリのようなものと捉えておりましたので、
    「RewriteCond %{REQUEST_FILENAME} !-f」をコメントアウトしたりもしたのですが、
    そうするとApacheからのInternal Server Errorが返ってきます。

    以下の子ページを表示させるにはどのような設定が必要でしょうか。

    http://example.com/service/detail/
    http://example.com/service/price/

    どなたかご教示いただければ助かります。
    どうぞよろしくお願いいたします。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • shokun0803

    (@shokun0803)

    固定ページでserviceというページを作成し、次にdetailというページを作成する際に親にserviceを指定します。
    priceも同じ方法で親にserviceを指定すれば階層になります。

    トピック投稿者 Eco

    (@eco)

    shokun0803様

    ご返信、ありがとうございます。

    ご教示くださったのは、「ページ編集 >属性」内の「親」というプルダウンメニューで、
    「当社のサービス(service/)」を選択する、という解釈でよろしいでしょうか。

    上記方法を、
     パーマリンク設定 :カスタム構造を選択し、/%category%/%category%/ と記述
    という条件の元で試してみましたが、結果は変わらず、WordPressの404が表示されました。

    なお、その他の固定ページ編集画面を見たとき、その「親」のプルダウンメニューには、
    当社のサービス
      サービス詳細
      価格
    というように表示されておりますので、階層にはなっているものと思われます。

    「パーマリンク設定」内、もしくはその他設定に、何か工夫が必要なのでしょうか。

    恐れ入りますが、引き続きご教示いただければ幸いです。
    どうぞよろしくお願いいたします。

    shokun0803

    (@shokun0803)

    ページにスラッグは指定されていますか?また、パーマリンクは「/%category%/%category%/」は決定稿ですか?カテゴリーを2回繰り返す意味がよく理解できませんが。
    パーマリンクはおそらく投稿で有効でページでは有効でない(そもそもページにカテゴリーは存在しない)ので、パーマリンクの問題ではなくページスラッグの問題だと思います。

    手前味噌で申し訳ありませんが、こちらが参考になりますか?

    トピック投稿者 Eco

    (@eco)

    shokun0803様

    引き続きのご返信、ありがとうございます。
    こちらからの反応が遅くなり、失礼いたしました。

    ページには、それぞれ以下のタイトルおよびスラッグを指定いたしました。

    タイトル(スラッグ)

    親) 当社のサービス(service)
      子)– サービス詳細(detail)
      子)– 価格(price)

    パーマリンクの「/%category%/%category%/」という形式は決定事項ではありません。
    「固定ページの各ページスラッグ=カテゴリー」と考えており、このような記述をいたしました。
    私のケースのように「/固定ページ(親)/その下の階層(子)/」と表示させたい場合、
    「パーマリンク設定」内の記述はどのようなものになりますでしょうか?
    http://wpdocs.sourceforge.jp/Using_Permalinks を読みながら、
    「/%category%/%postname%/」などと設定してみましたが、こちらもうまく動作しませんでした。

    shokun0803様にご提示いただいたリンクを拝見いたしましたが、
    WordPressで”*.html”というページ名を使える事を知りませんでしたので、大変参考になりました。
    ありがとうございました。
    お書きになっている、”.html”の付加を実現するプラグインとはどういったものでしょうか。
    こちらのプラグインと「Redirection」を使い、shokun0803様が取られた方法を
    試してみようと思います。

    トピック投稿者 Eco

    (@eco)

    shokun0803様のブログのアーカイブを参考に、
    パーマリンクに”.html”を付加するプラグイン「.html on PAGES」を探し出してインストールしてみました。
    その上で、以下のような構成としました。

    1) 空のファイル「当社のサービス(service.html)」を作成
    2) 「サービス詳細(detail.html)」と「価格(price.html)」を作成。
      「当社のサービス(service.html)」の子とする。
    3) 「パーマリンク設定」では、”カスタム構造”を選択し、「/%postname%.html」と記述する

    その後、ブラウザにて、
    親)http://example.com/service.html
    子)http://example.com/service/portal.html
    子)http://example.com/service/translation.html
    にアクセスしてみましたが、子である2つのURLは404エラーとなりました。
    残念ながら、”service”をフォルダのように扱うことはできませんでした。
    (”.html”を付加した時点で、”service”はファイルのように扱われるのでしょうか?)

    shokun0803様のおっしゃる「ページスラッグの問題」とは、どのように解釈すればよろしいでしょうか。
    何度もすみませんが、教えていただければ幸いです。

    トピック投稿者 Eco

    (@eco)

    shokun0803様のご助言もあり、なんとか解決することができました。

    頂いた情報を元に自分なりにネットで調べてみたところ、パーマリンクをカスタマイズできるプラグインというものを見つけました。「Custom Permalinks」というものです。
    こちらを管理画面の「プラグインの管理」内からインストールいたしました。

    「パーマリンク設定」で「月と投稿名」を選択し、各固定ページ(detailとprice)の編集画面の一番下に現れる「Custom Permalink」にて、それぞれ
    service/detail.html
    service/price.html
    と記述いたしますと、
    親)http://example.com/service/
    子)http://example.com/service/portal.html
    子)http://example.com/service/translation.html
    これら全てのURLが表示可能になりました。

    なお、「親)http://example.com/service/」には何も情報を掲載いたしませんので、編集画面にてrefreshのmetaタグを記述し、「http://example.com/service/portal.html」へ転送する事にいたしました。

    もっとスマートな解決方法があるのかもしれません。また、プラグインに頼るのではなく、WordPressのスラッグやパーマリンクについて根本的な理解を深めた上で、解決方法を模索するべきなのかもしれません。しかしながら、締め切りのあるサイト構築であることから、現状ではこの解決方法で良しとしたいと思います。

    今回の問題とshokun0803様からのアドバイスのお陰で、WordPressの様々なドキュメントに目を通す事ができました。誠にありがとうございました。

    このトピックが、少しでもどなたかのお役に立てれば幸いです。

    shokun0803

    (@shokun0803)

    解決して何よりです。
    ひとつ気になったので書いておきます。

    htaccessはちゃんと生成されていましたでしょうか?
    サーバーによっては自動生成されなかったり、そもそもhtaccessが許可されていなかったりすることがあります。その場合、リダイレクトはうまく動かないかもしれません。

    もうひとつ。
    ページではおそらくパーマリンクは関係ないので、パーマリンクの設定は投稿記事のみに影響すると思います。でも、私の記憶ではdefault設定ではだめだった記憶があります。

    今後の参考になれば。

    トピック投稿者 Eco

    (@eco)

    shokun0803様

    返信が遅くなり、大変失礼いたしました。

    当方の.htaccessですが、以下のような記述のものがドキュメントルート直下にWordPressによって作成されます。
    これは、「パーマリンク設定」でdefault以外のどれを選択しても、同じ内容です。

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    # END WordPress

    なお、現在利用しているNTTPCのSuiteXでは、マルチドメイン機能があることから、
    mod_rewriteが動作することは確認済みです。

    それから、

    >ページではおそらくパーマリンクは関係ないので、パーマリンクの設定は投稿記事のみに影響する

    こちらのご説明ですが、恥ずかしながら、どうしても理解できないのです。
    といいますのも、固定ページの編集画面にもパーマリンクの編集ボタンがあり、編集が可能になっているからです。

    パーマリンクについて理解するにあたり、WordPress公式サイトの日本語ドキュメント「パーマリンクの使い方」を読みましたが、固定ページとの関連についての解説は見当たらなかったように思います。見落としているのかもしれませんが…。
    英語は得意ではありませんが、意を決してWordPress本家のドキュメントを読んでみようと思います。

    shokun0803様には、いろいろとお世話になりました。誠にありがとうございました。

    といいますのも、固定ページの編集画面にもパーマリンクの編集ボタンがあり、編集が可能になっているからです。

    これはパーマリンクの編集ではなく、スラッグの編集のことですね。
    パーマリンクの編集とは「設定」->「パーマリンク設定」のことです。
    Codexにもそう書かれていませんか?

    トピック投稿者 Eco

    (@eco)

    shokun0803様

    またも返信が遅くなり、大変失礼いたしました。

    ページの編集画面上部、タイトルの下に「パーマリンクの変更」とありましたので、この箇所にてパーマリンクの編集が可能なのだと考えておりました。
    英語版Codex、Glossaryを読み、以下のように解釈いたしました。

    ページ > 編集 > タイトル下にある「パーマリンクの変更」とは、”ページスラッグを編集することによって、ページのURLを変更することができる”の意味である。

    一点、不思議に思ったことがございます。
    「ページの編集」画面内のタイトル下にありますPermalinkで、英語版で”Edit”となっているボタンを日本語版で「パーマリンクの変更」とするのは、混同しやすいのではないかということです。(とはいえ、混同するのは私くらいなもので、皆様はお分かりなのかもしれませんが…)

    shokun0803様におかれましては、不勉強な私に何度もお付き合いいただき、誠にありがとうございました。shokun0803様にご教示いただいた上記の知識が、私だけでなくどなたかのお役に立てば、と思います。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「固定ページにパーマリンクを設定し、各ページに個別URLを持たせる」には新たに返信することはできません。