Существует ли действительная причина, по которой необходимо завершать косые черты в URL-адресах необходимо применить? Если нет, я просто удалил бы правило перезаписи, и ваша проблема решена:)
Большинство URL-адресов ExpressionEngine будут работать с или без конечных слешей.
Самым простым решением этой проблемы будет удаление чрезмерного перенаправления конечного слеша и его замена более спокойной версией:
<IfModule mod_rewrite.c>
# Enable Apache's RewriteEngine
RewriteEngine On
# Add Trailing Slashes to URLs
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+[^/])$ /$1/ [R=301,L]
# ExpressionEngine Remove index.php from URLs
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
Используя приведенный выше код, example.com/mobile/index.php
не будет перезаписан в example.com/mobile/index.php/
, а также страницы с якорями example.com/page/#anchor1
.
EE - нет.Знайте разницу между URI, такими как /mobile
против /mobile/
, приложения веб-аналитики и поисковые системы могут рассматривать эти отдельные веб-страницы.Если вы разрабатываете статический веб-сайт, это не имеет большого значения, потому что, если вы попытаетесь перейти на первый URI (без косой черты), Apache автоматически перенаправит клиента на последний (с косой чертой).
Но для веб-приложения, такого как EE, где все в URI после index.php
обрабатывается приложением , а не Apache , это перенаправление остается на ваше усмотрение.Точно так же, как решение использовать или не использовать поддомен www
, не имеет значения, выберете ли вы конечный слеш или наоборот;просто важно, чтобы вы применяли одно или другое.
Sidenote: в EE1 конечные слеши генерируются в URL-адресах, создаваемых ExpressionEngine;в EE2 косые черты не генерируются.Исключением является Структурный модуль , который выводит URL с косой чертой в EE1 и EE2 .