我正在尝试在我的一个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错误...
感谢您提供任何帮助!
答案 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">></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查询。
感谢您的贡献。