ユーザーガイドの指示に従って、クリーンな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'] = '';