Шаблон .htaccess / controller / action дважды вызывает public / index. php - PullRequest
0 голосов
/ 06 апреля 2020

Добрый вечер,

Я старался изо всех сил описать проблему в заголовке и подробно опишу ее здесь:

У меня есть приложение, использующее этот шаблон / контроллер / действие / параметры URI (ie: register / complete / email: token: any_other_parameter) (параметры раскрываются в моем случае), пока я передаю только контроллер в URI (ie: / register), он работает нормально, и мой Индекс, стоящий в папке publi c /public/index.php, не вызывается дважды.

Однако при указании действия для контроллера / register / complete или / admin / login (например), public / index. php вызывается дважды.

Вот мой .htaccess в приложении root covoit / и в папке covoit / publi c.

Root .htaccess:

RewriteEngine On
RewriteBase /covoitudiant/

RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^%1 [L,NE,R=301]

RewriteRule ^/?([a-zA-Z]+)?/?([a-zA-Z]+)?/?(.*)? public/index.php?controller=$1&action=$2&parameters=$3 [L,QSA]

ErrorDocument 404 /covoitudiant/error

/ public / .htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Я не совсем понимаю концепцию его самостоятельного разрешения, о том, почему индекс. php вызывается дважды при получении от контроллера / действия URI или контроллера / действия / параметров ...

1 Ответ

0 голосов
/ 09 апреля 2020

Проблема была решена.

Отсутствующий файл снова вызывал мои Apache правила, и, таким образом, мой Контроллер вызывался дважды.

Это произошло из-за отсутствия аудиофайла с неправильный путь.

Кроме того, я использовал vhost Apache, чтобы получить один файл .htaccess, и перенастроил правила в соответствии с моей мини-платформой.

Вот результат, если это может помочь и другим людям:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # Handle Authorization Header.
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Handle Trailing Slashes.
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # If not Folder or File.
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !^index.php
    RewriteRule ^/?([a-zA-Z]+)?/?([a-zA-Z]+)?/?(.*)? index.php?controller=$1&action=$2&parameters=$3 [L,QSA]
</IfModule>

Хорошего дня!

...