在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版本,那么它再次起作用。我的问题是改变了什么,以及如何让它再次发挥作用。
答案 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
这应该有效 - 并且可以轻松定制以满足您的需求。