Обновление 26.06.18: Я понимаю, что это может быть дубликатом перенаправления, изменения URL-адресов или перенаправления HTTP на HTTPS в Apache - Все, что вы когда-либо хотели знать о правилах Mod_Rewrite, но боялись спросить , тем не менее, я упомянул в своем исходном сообщении, что я был на этом посте и нашел сайт тестировщиков из этого сообщения. Я прочитал этот пост, и хотя я все еще новичок в переписывании правил, я не думаю, что это дублирование; однако я могу ошибаться.
Я пытаюсь установить новое правило перезаписи в моем файле .htaccess
(ниже)
SetEnv HTTPS on
<IfModule mod_rewrite.c>
RewriteEngine On
Options -Indexes
# Send would-be 404 requests to Craft
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/(favicon\.ico|apple-touch-icon.*\.png)$ [NC]
RewriteRule (.+) index.php?p=$1 [QSA]
Options - Autodiscover
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ autodiscover.php [NC,L]
</IfModule>
Я нашел этот онлайн-тестер в этом сообщении: Redirect, Измените URL-адреса или перенаправьте HTTP на HTTPS в Apache - все, что вы когда-либо хотели знать о правилах Mod_Rewrite, но боялись спросить
Ссылка на тестер: .htaccess tester
Когда я запустил свою конфигурацию, я получил следующий вывод отладочная информация для .htaccess
Мой вопрос:
Спасибо всем, кто видит это и предлагает любую помощь или объяснение! ! : -)
У последнего правила нет условий, поэтому оно используется всегда.
RewriteRule ^.*$ autodiscover.php [NC,L]
Директива
RewriteCond
определяет условие правила. Один или несколькоRewriteCond
могут предшествовать директивеRewriteRule
. Следующее правило используется только в том случае, если текущее состояние URI совпадает с его шаблоном и если эти условия выполняются.
Следовательно, вместо этого все ваши условия связаны с предыдущим правилом:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
Также:
Вам потребуется RewriteEngine On
только один раз.
Параметры
- Автообнаружение
будет иметь синтаксическую ошибку, ЕСЛИ такая функция сервера есть.