web-dev-qa-db-ja.com

htaccessはlocalhostでは機能しますが、EC2インスタンスでは機能しません

私のhtaccessファイルはlocalhostで動作しますが、EC2インスタンスにデプロイすると動作しません。

Macbookを使用していて、Finderでhtaccessファイルが表示されません。おそらくEC2インスタンスにコピーされなかったと思いましたが、プロジェクトをコピーするとhtaccessファイルが表示されるため、これは問題ではないと思います私のエディタで。

EC2 Linuxインスタンスでmodの書き換えを有効にするものはありますか?ある場合、私はそれをしなかったか、それはデフォルトでmodの書き換えを有効にしますか?

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

さまざまな投稿からいくつかの情報をつなぎ合わせたので、答えを出そうと思いました。

  1. Paulがコメントしたように、Amazon EC2 Linuxを実行している場合、おそらくApacheの代わりにhttpdを実行しているでしょう。したがって、ファイルは/etc/httpd/conf/httpd.conf
  2. Rootユーザーとしてファイルを変更する必要があります。 (sshアクセスから)これを行います:Sudo vim /etc/httpd/conf/httpd.confAmazon EC2でhttpd.confファイルを編集する方法
  3. DocumentRoot "/var/www/html"が2か所に掲載されました。その後のAllowOverride NoneからAllowOverride Allこれら2つの場所。
  4. Apacheを再起動します。私はec2インスタンス全体を再起動しました(Apacheを自動的に起動するように設定しています)が、Apacheを再起動するだけで動作するはずです。しかし、変更は機能しているようです。

.htaccessファイルにも同じ変更を加えようとしました(コードイグナイターアプリケーションのURLからindex.phpを削除しました)。それが役に立てば幸い!

56
user1521567

デフォルトでは、EC2では.htaccessが有効になっていません。許可するには、httpd.configを編集する必要があります。

/ etc/Apache/sites-available/defaultで、AllowOverRide = NoneをAllowOverRide = Allに変更します。

8
user2864228

Apache2サーバーを使用する場合

次のディレクトリに移動します。

cd/etc/Apache2/sites-available

ここでLSコマンドを使用すると、次のファイルが表示されます。

0-default.conf

これは、/ var/www/htmlフォルダー内のサイトに適用される、デフォルトのApache設定を含むファイルです。

このファイルを開いて編集します。

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ファイルは動作します

2
Raghul

その3つのステップのプロセス

  1. Apache mod_rewriteを設定し、ターミナルで実行します。 Sudo a2enmod rewrite

  2. / etc/Apache2/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. Apacheを再起動します

/etc/init.d/Apache2 restart
2
Abhishek Gupta

つのステップがあります

  1. Apache mod_rewriteを設定し、ターミナルで実行します。 Sudo a2enmod rewrite

  2. VirtualHostタグ/etc/Apache2/sites-available/000-default.confを閉じた後、このファイルにこのコードを追加します

    DocumentRoot/var/www
    オプションFollowSymLinks
    AllowOverride All
    オプションインデックスFollowSymLinks MultiViews
    AllowOverride All
    注文許可、拒否
    すべてから許可

  3. コマンドでApacheサーバーを再起動します

    SudoサービスApache2の再起動

0
Raman Singh

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インスタンスで機能しました。

0
lucasvm1980