使用带有Expressionengine和Structure的GET查询字符串

时间:2011-07-01 01:56:25

标签: query-string structure expressionengine

我正在尝试在我的一个EE Structure页面上设置分页,而GET查询字符串会导致404错误。我认为这与我的.htaccess文件有关,但我无法弄明白。这是我的.htaccess文件,我使用exclude方法从URL中删除index.php,

RewriteCond $1 !^(images|system|themes|modules|scripts|uploads|css|favicon\.ico|robots\.txt|index\.php|sitemap\.php|sitemap\.xml) [NC]
RewriteRule ^(.*)$ /index.php/$1 [QSA,L]

所以,如果我添加一些简单的查询,如

/account/?page=2

我收到404错误...

感谢您提供任何帮助!

3 个答案:

答案 0 :(得分:0)

是的,它正在尝试找到一个名为“?page = 2”的模板,但不是这样就会引发404错误。

尝试使用URL中的index.php文件名:/account/index.php?page = 2。

或者,我所做的是创建URL变量段并使用{segment_#}来解析它们。所以,/ account / page2 /然后在模板中使用{segment_2}来获取该变量。

答案 1 :(得分:0)

您的GET查询字符串在哪里生成?您的method of removing index.php from the URL对生成的{pagination_links}的内容没有任何影响。

ExpressionEngine的paginations links只需在当前页面的网址末尾添加/P5/P10/P15 URL segment variable

例如,给出以下代码:

{exp:channel:entries channel="site" dynamic="off" limit="5" paginate="bottom"}
    <p><a href="{title_permalink=structure/template}">{title}</a></p>

    {paginate}
        <p>Page {current_page} of {total_pages} pages {pagination_links}</p>
    {/paginate}
{/exp:channel:entries}

ExpressionEngine为分页链接输出的HTML将是:

<p>
    Page 1 of 3 pages <strong>1</strong>
    <a href="/structure/template/P5">2</a>
    <a href="/structure/template/P10">3</a>
    <a href="/structure/template/P5">&gt;</a>
</p>

您会注意到分页链接不使用任何GET或POST查询字符串参数,而是使用 P5 P10 的网址段变量P15 ,依此类推(其中P#是limit parameter的倍数和分页结果集的当前索引)

答案 2 :(得分:0)

我能够解决这个问题,而不是最优雅的选项,因为需要为每个需要查询字符串的页面完成...

RewriteCond %{QUERY_STRING} ^page
RewriteCond %{REQUEST_URI} ^/account/$ [NC]
RewriteRule (.*) /index.php?/account/index/&%{QUERY_STRING} [L]

所以这意味着你可以使用,

/account/?page=2

然后使用PHP正常获取GET查询。

感谢您的贡献。