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]
Ответы
Ответ 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.