expressionengine URL重写2.3.1

时间:2011-11-23 17:31:32

标签: codeigniter expressionengine

在EE 2.2.2中有我的htaccess文件

RewriteRule ^(.*)$ /index.php/view/$1 [L] 

允许我将 domain.com/index.php/view/phone 重写为 domain.com/phone

在EE 2.3.1中,这不再适用。问题似乎在于 system \ codeigniter \ system \ core \ URI.php ,我看到这个文件发生了一些变化。如果我将URI.php替换为2.2.2版本,那么它再次起作用。我的问题是改变了什么,以及如何让它再次发挥作用。

1 个答案:

答案 0 :(得分:1)

更新回答

经过一段时间的思考(和测试)后,我提出了一个替代解决方案,可能符合您对更新EE的需求。

假设您的重写规则如下:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

现在,我的建议是让您的view模板组成为索引模板组。 在view模板组的索引模板中,您可以拥有以下内容:

{exp:channel:entries channel="view_channel" require_entry="yes"}
{if no_results}
{embed="a_template_group/my_normal_frontpage"}
{/if}
<DOCTYPE html>
<html>
    <head>
        <title>{title}</title>
    </head>
    <body>
        <h1>{title}</h1>
    </body>
</html>

{/exp:channel:entries}

这使您可以在不添加其他重写规则的情况下让访问者转到http://example.org/phone,并且视图/索引模板将尝试查找条目ID为“phone”的条目。如果找不到该条目({if no_results}部分)则嵌入另一个模板。在这种情况下,我会假设你想展示某种头版。

这样,您还可以在view模板组下创建普通模板,例如view/create_entry,当您转到http://example.org/create_entry

这应该有效 - 并且可以轻松定制以满足您的需求。