htaccess works in localhost but doesn't work i

2019-01-23 05:32发布

My htaccess file works on localhost but doesn't work when i deploy it to EC2 instance.

I'm using Macbook and in finder i cannot see the htaccess file, i thought that perhaps it didn't get copied to EC2 instance but i don't think this is the problem because when i copy the project i can see the htaccess file in my editor.

Is there something enabling mod rewrite in EC2 linux instance? If there is, i didn't do it or it enables mod rewrite as default?

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

4条回答
迷人小祖宗
2楼-- · 2019-01-23 06:14

Its a three step process

  1. Configure apache mod_rewrite,run in terminal. sudo a2enmod rewrite

  2. add the following code to /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.Restart apache

/etc/init.d/apache2 restart
查看更多
地球回转人心会变
3楼-- · 2019-01-23 06:14

There are three steps

  1. Configure apache mod_rewrite,run in terminal. sudo a2enmod rewrite

  2. Add this code in this file after closing VirtualHost tag /etc/apache2/sites-available/000-default.conf

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

  3. Restart apache server by command

    sudo service apache2 restart

查看更多
疯言疯语
4楼-- · 2019-01-23 06:18

I pieced together some info from various posts so I thought I'd put up an answer.

  1. As Paul commented, If you're running Amazon EC2 Linux, you're probably running httpd instead of Apache. The file is therefore in /etc/httpd/conf/httpd.conf
  2. You have to change the file as root user. (from ssh access) Do this: sudo vim /etc/httpd/conf/httpd.conf (How to edit httpd.conf file in AMAZON EC2)
  3. DocumentRoot "/var/www/html" was listed in two places for me. I had to change the subsequent AllowOverride None to AllowOverride All in those two places.
  4. Restart apache. I restarted my whole ec2 instance (i have apache configured to start automatically) although just restarting apache should work. But I see the change is working.

I was trying to make the same changes in a .htaccess file (removing the index.php from urls in a code igniter application). Hope it helps!

查看更多
趁早两清
5楼-- · 2019-01-23 06:20

By default EC2 doesn't have .htaccess enabled, you must edit your httpd.config to allow for it.

In /etc/apache/sites-available/default change AllowOverRide = None to AllowOverRide = All.

查看更多
登录 后发表回答