2013-10-16 33 views
13

Mój plik htaccess działa na serwerze localhost, ale nie działa po wdrożeniu go w instancji EC2.htaccess działa w localhost, ale nie działa w instancji EC2

Używam MacBooka, aw wyszukiwarce nie widzę pliku htaccess, myślałem, że być może nie skopiowano go do instancji EC2, ale nie sądzę, że to jest problem, ponieważ kiedy kopiuję projekt, mogę zobacz plik htaccess w moim edytorze.

Czy jest coś, co umożliwia przepisywanie modów w instancji linuksa EC2? Jeśli tak, to nie zrobiłem tego lub pozwala on na przepisywanie do domyślnych ustawień?

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

FYI - można pokazać niewidzialne pliki w OS X, uruchamiając polecenie terminala i ponowne uruchomienie programu Finder. 'defaults napisz com.apple.finder AppleShowAllFiles TAK." – zekel

Odpowiedz

6

Domyślnie EC2 nie ma włączonego .htaccess, należy edytować plik httpd.config, aby na to zezwolić.

W/etc/apache/sites-available/default zmiana AllowOverRide = None na AllowOverRide = All.

+0

Tak, są one ukryte, ale kiedy skopiuję folder ukryte pliki są pomijane? Tak, próbuję zrozumieć, że problem polega na tym, że nie mogę skopiować mojego pliku .htaccess na serwer. –

+0

Czy próbowałeś po prostu skopiować zawartość .htaccess do .htaccess na zdalnym serwerze? –

+0

Używam instancji Amazon EC2 Linux i nie wiem jak to zrobić. Czy istnieje inny plik .htaccess na serwerze oprócz tego, że został skopiowany? –

2

Jego procesie trójstopniowym

  1. Konfiguracja mod_rewrite uruchomić w terminalu. sudo a2enmod przepisać

  2. dodać następujący kod do pliku/etc/apache2/miejsca dostępnego/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.Włącz ponownie apache

/etc/init.d/apache2 restart 
38

I zebrałem trochę informacji z różnych postów, więc pomyślałem, że podniosę odpowiedź.

  1. Jak skomentował Paul, jeśli używasz systemu Amazon EC2 Linux, prawdopodobnie używasz httpd zamiast Apache. Plik jest zatem w /etc/httpd/conf/httpd.conf
  2. Musisz zmienić plik jako użytkownik root. (z dostępu ssh) Zrób to: sudo vim /etc/httpd/conf/httpd.conf (How to edit httpd.conf file in AMAZON EC2)
  3. DocumentRoot "/var/www/html" został wymieniony w dwóch miejscach dla mnie. Musiałem zmienić kolejne AllowOverride None na AllowOverride All w tych dwóch miejscach.
  4. Uruchom ponownie apache. Ponownie uruchomiłem całą instancję EC2 (mam apache skonfigurowane do automatycznego uruchamiania), chociaż powinno działać tylko ponowne uruchamianie Apache. Ale widzę, że zmiana działa.

Próbowałem wprowadzić te same zmiany w pliku .htaccess (usunięcie pliku index.php z adresów URL w aplikacji włącznika kodu). Mam nadzieję, że to pomoże!

+0

Dziękuję bardzo za to. Dla innych: ** Restartowanie instancji EC2 z AWS jest koniecznością **. –

+2

Nie trzeba ponownie uruchamiać całego wystąpienia, wystarczy zrestartować httpd. Możesz to zrobić za pomocą wiersza polecenia z/sbin/service httpd restart – foamcow

+0

Wielkie dzięki za to. – testuserx

0

Istnieją trzy kroki,

  1. Konfiguracja mod_rewrite apache, uruchom w terminalu. sudo a2enmod przepisać

  2. Dodaj ten kod w tym pliku po zamknięciu tagu VirtualHost/etc/apache2/sites-available/000-default.conf

    DocumentRoot/var/www
    Opcje FollowSymLinks
    AllowOverride Wszystko
    Opcje Indeksy FollowSymLinks MultiViews
    AllowOverride Wszystko
    Order allow, deny
    pozwalają z całą

  3. Restart serwer apache poleceniem

    sudo service apache2 restart

Powiązane problemy