Подтвердить что ты не робот

Htaccess работает в localhost, но не работает в экземпляре EC2

Мой файл htaccess работает на localhost, но не работает, когда я развертываю его в экземпляре EC2.

Я использую Macbook, а в finder я не вижу файл htaccess, я думал, что, возможно, он не копируется в экземпляр EC2, но я не думаю, что это проблема, потому что когда я копирую проект, я могу видеть файл htaccess в моем редакторе.

Есть ли что-то, позволяющее переписывать мод в экземпляре Linux в EC2? Если это так, я не делал этого, или он позволяет переписать по умолчанию по умолчанию?

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

Ответ 1

Я собрал некоторую информацию из разных сообщений, поэтому я подумал, что отвечу.

  • Как сказал Пол: Если вы используете Amazon EC2 Linux, вероятно, вы используете httpd вместо Apache. Поэтому файл находится в /etc/httpd/conf/httpd.conf
  • Вы должны изменить файл как пользователь root. (из доступа ssh) Сделайте это: sudo vim /etc/httpd/conf/httpd.conf (Как отредактировать файл httpd.conf в AMAZON EC2)
  • DocumentRoot "/var/www/html" был указан в двух местах для меня. Мне пришлось изменить последующий AllowOverride None на AllowOverride All в этих двух местах.
  • Перезапустите apache. Я перезапустил весь экземпляр ec2 (у меня настроен apache для автоматического запуска), хотя просто перезапуск apache должен работать. Но я вижу, что изменение работает.

Я пытался внести те же изменения в файл .htaccess(удалив index.php из URL-адресов в приложении с воспламенением кода). Надеюсь, это поможет!

Ответ 2

По умолчанию EC2 не имеет включенного .htaccess, вы должны отредактировать свой httpd.config, чтобы разрешить его.

В/etc/apache/sites-available/default change AllowOverRide = None для AllowOverRide = All.

Ответ 3

Его трехэтапный процесс

  • Настройте apache mod_rewrite, запустите в терминале. sudo a2enmod переписать

  • добавить следующий код в /etc/apache 2/sites-available/default

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

3.Restart apache

/etc/init.d/apache2 restart

Ответ 4

Есть три шага

  • Настройте apache mod_rewrite, запустите в терминале. sudo a2enmod переписать

  • Добавьте этот код в этот файл после закрытия тега VirtualHost/etc/apache2/sites-available/000-default.conf

    DocumentRoot/var/www
    Опции FollowSymLinks
    AllowOverride All
    Параметры индексов FollowSymLinks MultiViews
    AllowOverride Все
    Разрешить заказ, отрицать
    разрешить из всех

  • Перезапустите сервер apache командой

    sudo service apache2 restart

Ответ 5

Когда вы используете сервер apache2

Перейдите в следующий каталог.

cd/etc/apache2/sites-available

Если вы используете команду LS здесь, вы увидите следующий файл.

000-default.conf

Это файл с настройками Apache по умолчанию, которые применяются к вашим сайтам в папке /var/www/html.

Откройте этот файл для редактирования.

sudo nano 000-default.conf

Добавьте следующие строки после строки DocumentRoot/var/www/html.

Options FollowSymLinks AllowOverride All Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all

Сохраните файл и перезапустите apache.

перезапуск службы sudo apache2

что это и теперь ваш .htaccess файл будет работать

Ответ 6

В среде Linux 1 - cd/etc/apache2/sites-available

2 - sudo nano 000-default.conf

и вставьте этот код:

<Directory "/var/www/html">
    Order allow,deny
    Allow from all
    Options None
    AllowOverride All
</Directory>

Это сработало на экземпляре AWS.