1

ユーザーガイドの指示に従って、クリーンなURLでExpressionEngine2.4をセットアップしました。彼らは素晴らしい働きをします。しかし、たとえばチャネルエントリタグからのパス単一変数を使用すると、パスに「index.php」が含まれます。例えば:

{exp:channel:entries channel="news"}
  ..
  <a href="{comment_url_title_auto_path}">Test</a>
{/exp:channel:entries}

レンダリング先:

<a href="http://eetest/index.php/mothra-is-attacking">Test</a>

現在、次の2つの部分で構成される回避策があります。

まず、Find and Replace Plusプラグインを使用して、URLから「index.php」をスクラブします。

{exp:channel:entries channel="news" limit="1"} 
    <a href="{exp:replace_plus find="index.php/"}
             {comment_url_title_auto_path}
           {/exp:replace_plus}">Test</a>
{/exp:channel:entries}

それは私に動作するクリーンURLを与えます:

<a href="http://eetest/mothra-is-attacking">Test</a>

次に、テンプレートでURLを見逃した場合に備えて、「index.php」が含まれているURLが含まれていないURLにリダイレクトされるようにします。私の.htaccessでは、次の句を使用しています。

# Redirect index.php Requests
# ------------------------------
RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC]
RewriteCond %{THE_REQUEST} ^GET
RewriteRule ^index\.php(.+) $1 [R=301,L] 

したがって、このセットアップは機能しますが、雑然としていて(テンプレート内のリンクに検索/置換を振りかける)、少し非効率的で(場合によってはリダイレクトを強制します)、完全にSEOに適しているわけではありません(index.phpでレンダリングするURLの場合) 。

私の質問は、そもそもindex.phpがこれらのパスのいくつかに表示されないようにするために欠けている設定がありますか?

これが私のconfig.phpのいくつかの関連する設定です:

$config['index_page'] = ''; //per the user docs on removing index.php
$config['uri_protocol'] = 'AUTO'; //didn't have luck with the other values
$config['base_url'] = '';
$config['url_suffix'] = '';
4

2 に答える 2

1

これを処理するもう 1 つの方法は、Deploy Helper または Reelocate を使用することです。この 2 つの優れたアドオンは、通常はコントロール パネル全体に分散しているすべてのパス変数を 1 つの場所にまとめて、1 つのボタンですばやく簡単に見つけて置き換えることができます。クリック。そうすれば、自動パスに影響を与える可能性のある迷子の index.php 参照がすべて検出され、一度に更新されます。どちらも素晴らしいツールです。

于 2012-10-24T15:07:27.787 に答える
1

それを見つけた。

[管理] -> [チャンネル管理] -> [チャンネル] に移動し、チャンネルごとに [設定の編集] をクリックする必要がありました。

そこで、「パス設定」セクションの「チャンネル URL」フィールドから「index.php」を削除しました。

更新を押してフロントエンドページを更新した後。上記のパスにあるすべての index.php がなくなりました。回避策はもう必要ありません。

于 2012-08-13T02:08:13.353 に答える