从某些ExpressionEngine 2路径中删除index.php

时间:2012-08-12 18:47:08

标签: .htaccess expressionengine

我根据User Guide instructions设置了带有干净网址的ExpressionEngine 2.4。他们工作得很好。但是当我使用路径单变量时,比如channel entries tag,我仍然在路径中得到“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>

我目前有一个由两部分组成的解决方法:

首先,我使用Find and Replace Plus插件从网址中清除“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}

这给了我干净利落的工作:

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

其次,如果我错过了模板中的网址,我会确保其中包含“index.php”的网址被重定向到没有网址的网址。在我的.htaccess中,我使用了这个句子:

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

因此,虽然这个设置工作它混乱(让我在我的模板中的链接上查找/替换)并且有点低效(在某些情况下强制重定向),并且它不完全是SEO友好的(对于那些使用索引呈现的URL) .PHP)。

我的问题是,是否有一些设置我缺少防止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'] = '';

2 个答案:

答案 0 :(得分:1)

找到它。

我必须转到Admin-&gt;频道管理 - &gt;频道,然后点击每个频道的“修改偏好设置”。

在那里,我从“路径设置”部分的“频道网址”字段中删除了“index.php”。

点击更新并刷新我的前端页面后。上面显示的路径中的所有index.php都消失了。不再需要解决方法!

答案 1 :(得分:1)

另一种处理方法是使用Deploy Helper或Reelocate - 两个出色的附加组件,将通常在整个控制面板中分布的所有路径变量拉到一个位置,这样您就可以快速轻松地找到并替换它们单击一下按钮。这样,将一次性找到并更新任何会影响您的自动路径的stray index.php引用。这两个伟大的工具。