Не удается удалить index.php из URL-адреса codeigniter в AWS (пользователь ec2) - PullRequest
0 голосов
/ 04 декабря 2018

Я создаю приложение, используя AWS.Ниже показан .htaccess, который я использую,

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

При использовании этого .htaccess я получаю следующую ошибку,

enter image description here

Если .htaccess не используется, все работает нормально.Любое руководство о том, как решить эту проблему высоко ценится.Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Отредактируйте файл ниже:

/ etc / httpd / conf.d / vhost.conf

Вы увидите следующие коды:

 <Directory /var/www/html/foldername>
     AllowOverride All
 </Directory>

Заменитекод выше с этим:

  <Directory /var/www/vhosts/foldername>
      Options -FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        Order deny,allow
        Allow from all
 </Directory>

Примечание: следите за отступом кода, неправильный отступ приведет к ошибке.

0 голосов
/ 04 декабря 2018

Ошибка, вероятно, не из-за .htaccess.Скорее всего, вы не настроили конфигурацию сервера должным образом и не дали разрешение на доступ к папке.

На веб-сервере Apache это разрешение часто задается в разделе <Directory> конфигурации.Вот общий пример.

<VirtualHost _default_:443>
    ServerName example.com
    DocumentRoot /var/www/example/htdocs

  <Directory /var/www/example/htdocs>
    AllowOverride All
    Require all granted

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L] 
  </Directory>

  # many other directives too

</VirtualHost>

Директива, которая предоставляет разрешение - это строка Require all granted.Вышеуказанное обычно находится в файле, хранящемся в /etc/apache2/sites-available.

Обратите внимание, что вы можете использовать RewriteEngine в файлах конфигурации сервера.На самом деле, это лучший способ.Использовать .htaccess следует только в том случае, если вы не можете самостоятельно редактировать файлы конфигурации, например, на виртуальном хостинге.Но поскольку вы работаете в AWS, вы можете и должны сами управлять конфигурацией.Некоторое чтение дает хорошее объяснение того, почему вы не должны использовать .htaccess .

Поведение "это работает без .htaccess", вероятно, потому, что действует директива AllowOverride None.Эта директива отключает возможность использования .htaccess в каталоге.Когда вы пытаетесь «переопределить директивы» через .htaccess, то разрешение отклоняется.

Другая возможная проблема заключается в том, что папка, содержащая index.php, не имеет правильного «владельца», как правило, «www-data: www».-данные "через вариации найдены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...