Использование GET Query Strings с Expressionengine и Structure - PullRequest
0 голосов
/ 01 июля 2011

Я пытаюсь настроить нумерацию страниц на одной из моих страниц структуры EE, и строка запроса GET приводит к ошибке 404. Я думаю, что это как-то связано с моим файлом .htaccess, но я не могу понять это. Вот мой файл .htaccess, я использую метод exclude для удаления index.php из URL,

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 голосов
/ 02 июля 2011

Откуда генерируются ваши строки запроса GET? Ваш метод удаления index.php из URL не повлияет на то, каким будет сгенерированный {pagination_links}.

ExpressionEngine ссылок на страницы просто добавляют /P5, /P10 или /P15 переменную сегмента URL в конец URL текущей страницы:

Например, с помощью следующего кода:

{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}

HTML-вывод ExpressionEngine для ссылок на страницы будет:

<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 и вместо этого используют переменную сегмента URL-адреса P5 , P10 , P15 и т. Д. (где P # кратно предельному параметру и текущему индексу разбитого на страницы набора результатов) .

0 голосов
/ 04 июля 2011

Мне удалось выяснить это, не самый элегантный вариант, потому что это нужно делать для каждой страницы, для которой требуются строки запроса ...

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

Так что это означает, что вы можете использовать,

/account/?page=2

А затем получите запрос GET, как обычно, с помощью PHP.

Спасибо за ваш вклад, ребята.

0 голосов
/ 01 июля 2011

Да, он пытается найти шаблон с именем «? Page = 2», но не выдает ошибку 404.

Попробуйте использовать имя файла index.php в URL: /account/index.php?page=2.

Или я делаю сегменты переменных URL-адресов и использую {сегмент_ #} для их анализа. Итак, / account / page2 /, а затем используйте {сегмент_2} в своем шаблоне, чтобы получить эту переменную.

...