Apache vhost конфликтует с CI .htaccess - PullRequest
0 голосов
/ 17 февраля 2019

Я переписываю подпапки моего веб-сайта в поддомен с помощью приведенного ниже кода в Apache файле vhost:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. example.com
RewriteCond %{HTTP_HOST} ^(www\.)?(([^\.]+)\.){1}example.com$
RewriteCond /var/www/example.com/web/crm/build/%3 -d
RewriteRule ^/(.*) /crm/build/%3/$1

, поэтому https://example.com/web/crm/folder = https://folder.example.com

Такжея использую .htaccess, чтобы скрыть /index.php/ в codeigniter url

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
AddDefaultCharset utf-8

example.com/web/crm/folder отлично работает

folder.example.com я получаю 505 внутреннюю ошибку, которая однажды исправная удаляю строки в .htaccess или просто веб-сайте простого доступа через folder.example.com/index.php/ (в журнале ничего не отображается)

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

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Исправлено

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
  ErrorDocument 404 /index.php
</IfModule>
0 голосов
/ 17 февраля 2019

ОК, два предложения:

  1. Было бы неплохо узнать, какая конкретная ошибка на стороне сервера вызывает HTTP 505.

    Пожалуйста, скопируйте / пропустите точнуюсообщение с вашего сервера войдите в ваше сообщение.

  2. Было бы также хорошо узнать, как именно интерпретируются ваши правила перезаписи.

    Пожалуйста, включите ведение журнала следующим образом:

Как отлаживать Apache mod_rewrite

Модуль Apache mod_rewrite

mod_rewrite предлагает подробный журнал своих действий на уровнях журнала от trace1 до trace8.Уровень журнала может быть установлен специально для mod_rewrite с помощью директивы LogLevel: вплоть до уровня отладки, никакие действия не регистрируются, а trace8 означает, что практически все действия регистрируются.

Пример

LogLevel alert rewrite:trace6

Джордж Самаргулиани добавил этот комментарий, в котором объясняется ошибка HTTP 505:

apache не запускается после добавления правила перезаписи журнала в файл vhost. Задание для httpd.service не выполнено из-за процесса управлениявыход с кодом ошибки.См. Подробности в «systemctl status httpd.service» и «journalctl -xe».

Я скопировал / вставил приведенный выше фрагмент vhost в первый удобный валидатор конфигурации Apache, https://htaccess.madewithlove.be/, и получилэто:

htaccess.MadeWithLove validator

Так что теперь, по крайней мере, мы знаем, что вызывает ошибку на стороне сервера: Конфигурация Apache vhost.

НОВЫЕ ПРЕДЛОЖЕНИЯ:

  1. Что касается "index.php", я даже не думаю, что вам нужно или не нужно переписывать правило.

    Просто настройте «DirectoryIndex», например:

    <Directory /myapp>
      DirectoryIndex index.php
    </Directory>
    
  2. Что касается остальной части URL (например, `` http://example.com/web/crm/build/`),, пожалуйста, обновитеВаш пост с примерами до / после того, как вы бы хотели, чтобы редирект действительно работал.

  3. Существует множество хороших "примеров" с хорошими примерами использования .httaccess / mod_rewriteправила, например:

...