Mam serwer z usługi AWS EC2 działający na Linuksie ubuntu i zainstalowałem apache, php i mysql.
Dodałem .htaccess
plik w katalogu głównym dokumentów /var/www/html
.
Wpisałem w nim ten kod:
ErrorDocument 404 /var/www/html/404.php
i nadal się nie wyświetla.
Wielokrotnie wprowadzałem to polecenie: sudo service httpd restart
aby zrestartować serwer, ale żadne zmiany nie zostały wyświetlone ...
Jak mogę to naprawić ... Czy zrobiłem coś nie tak?
Z góry dziękuję!
apache
.htaccess
amazon-ec2
amazon-web-services
apache-config
Shalin Shah
źródło
źródło
400 Bad Request
błąd na/var/www/html/404.php
?Odpowiedzi:
Po pierwsze, należy pamiętać, że ponowne uruchomienie httpd nie jest konieczne w przypadku plików .htaccess. Pliki .htaccess są przeznaczone specjalnie dla osób, które nie mają uprawnień administratora - tj. nie mają dostępu do pliku konfiguracyjnego serwera httpd i nie mogą go ponownie uruchomić. Ponieważ możesz zrestartować serwer, nie potrzebujesz plików .htaccess i możesz bezpośrednio korzystać z konfiguracji serwera głównego.
Po drugie, jeśli pliki .htaccess są ignorowane, musisz sprawdzić, czy AllowOverride jest ustawione poprawnie. Szczegółowe informacje można znaleźć pod adresem http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride . Musisz również upewnić się, że jest ustawiony we właściwym zakresie - tj. We właściwym bloku w twojej konfiguracji. Na przykład upewnij się, że NIE edytujesz tego w bloku.
Po trzecie, jeśli chcesz mieć pewność, że plik .htaccess jest faktycznie odczytywany, umieść w nim śmieci. Nieprawidłowa linia, na przykład „INVALID LINE HERE” w pliku .htaccess, spowoduje błąd 500 Server Error, gdy wskażesz przeglądarkę katalog zawierający ten plik. Jeśli tak się nie stanie, oznacza to, że nie masz poprawnie skonfigurowanego AllowOverride.
źródło
"A STRING"
mój .htaccess, więc otrzymałem błąd, więc umieściłemAllowOverride All
wszystkoapache2.conf
w moim Debianie i działaAllowOverride
działa tylko w<Directory>
dyrektywach i zostanie zignorowany, jeśli zostanie umieszczony w<Location ...>
sekcji, zobacz: httpd.apache.org/docs/2.4/mod/core.html#allowoverride<Directory>
dyrektywa oczekuje ścieżki bezwzględnej zamiast względnej. W moim przypadku<Directory />
nie udało się podczas<Directory /var/www/html/subdir>
pracy.Włącz moduł mod_rewrite Apache
a2enmod rewrite
dodaj następujący kod do
/etc/apache2/sites-available/default
AllowOverride All
Zrestartuj Apache
/etc/init.d/apache2 restart
źródło
Jeśli wypróbowałeś wszystkie powyższe, z których wszystkie są poprawnymi i dobrymi odpowiedziami, a Twój plik htaccess nie działa lub nie jest odczytywany, zmień dyrektywę w
apache2.conf
pliku. W Ubuntu ścieżka to/etc/apache2/apache2.conf
Zmień
<Directory>
dyrektywę wskazującą na Twoje publiczne strony internetowe, na których znajduje się plik htaccess. Zmień zAllowOverride None
naAllowOverride All
Miałem ten sam problem i znalazłem odpowiedź i wyjaśnienie w Ubuntu Ask! forum /ubuntu/421233/eniring-htaccess-file-to-rewrite-path-not-working
źródło
AllowOverride FileInfo
w trzeciej linii jest wymagane.htaccess
do odczytu i użycia pliku.All
umożliwia również dodatkowe nadpisania konfiguracji, takie jak.httpasswd
(które można włączać indywidualnie, używającAuthconfig
zamiastAll
).W przypadku Ubuntu
najpierw uruchom to polecenie: -
Następnie edytuj plik
/etc/apache2/sites-available/000-default.conf
za pomocą nano lub vim za pomocą tego polecenia: -Następnie w
000-default.conf
pliku dodaj to po wierszuDocumentRoot /var/www/html
. Jeśli twój główny katalog html jest inny, napisz, że: -Po wykonaniu wszystkiego uruchom ponownie Apache za pomocą polecenia
sudo service apache2 restart
źródło
Po prostu wykonaj 3 kroki
Włącz mode_rewrite za pomocą następującego polecenia
sudo a2enmod przepisać
Zostaniesz poproszony o hasło. Więc wprowadź swoje hasło
Zaktualizuj swój plik 000-default.conf lub default.conf znajdujący się w katalogu / etc / apache2 / sites-available / . nie możesz go edytować bezpośrednio. więc użyj następującego polecenia, aby otworzyć
sudo gedit /etc/apache2/sites-available/000-default.conf
Lub sudo gedit /etc/apache2/sites-available/default.conf
dostaniesz
LUB
linia. Dodaj następujący kod po nim.
Ustaw użytkownika, aby ścieżka do znacznika katalogu była taka sama, jak w pliku.
Zrestartuj serwer Apache za pomocą następującego polecenia
restart usługi sudo apache2
źródło
Najprawdopodobniej AllowOverride jest ustawiona na None. w sekcji Directory apache2.conf znajdującej się w folderze / etc / apache2
Spróbuj ustawić je na AllowOverride All
źródło
Z mojego doświadczenia wynika, że / var / www / directory dyrektywa zapobiega dyrektywom virtualhost podfolderów. Więc jeśli wypróbowałeś wszystkie sugestie i nadal nie działa i używasz virtualhostów, spróbuj tego;
1 - Upewnij się, że masz
AllowOverride All
dyrektywę w/etc/apache2/sites-available/example.com.conf
2 - Sprawdź dyrektywy / var / www / Directory w
/etc/apache2/apache2.conf
(prawdopodobnie w linii 164), który wygląda tak;Jeśli jest
AllowOverride None
dyrektywa, zmień ją naAllowOverride All
linię ucieczki lub po prostuźródło
Domyślnie Apache zabrania używania pliku .htaccess do stosowania reguł przepisywania, więc
Krok 1 - Włączanie mod_rewrite (jeśli nie jest włączone) Najpierw musimy aktywować mod_rewrite. Jest dostępny, ale nie jest włączony przy czystej instalacji Apache 2.
Spowoduje to aktywację modułu lub ostrzeżenie, że moduł jest już włączony. Aby wprowadzić te zmiany, uruchom ponownie Apache.
mod_rewrite jest teraz w pełni włączony. W następnym kroku utworzymy plik .htaccess, którego użyjemy do zdefiniowania reguł przepisywania dla przekierowań.
Krok 2 - Konfiguracja .htaccess Otwórz domyślny plik konfiguracyjny Apache za pomocą nano lub ulubionego edytora tekstu.
Wewnątrz tego pliku znajdziesz blok rozpoczynający się w pierwszej linii. Wewnątrz tego bloku dodaj następujący nowy blok, aby plik konfiguracyjny wyglądał następująco. Upewnij się, że wszystkie bloki są odpowiednio wcięte.
/etc/apache2/sites-available/000-default.conf
Zapisz i zamknij plik. Aby wprowadzić te zmiany, uruchom ponownie Apache.
Gotowe. Twoja .htacess powinna działać. Ten link może faktycznie pomóc komuś https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04
źródło
$ sudo httpd -k restart
(Red Hat 4.4.7-23)Usunąłem to użycie. Korzystając z tej witryny kliknij tutaj , postępuj zgodnie z instrukcjami, te same kroki co do wersji Ubuntu 18.04
źródło
W
WampServer
ikonie Open WampServer Tray ----> Apache ---> Apache Modules ---> rewrite_moduleźródło
użyj RewriteBase / {twój folder} / na swoim .htaccess
źródło
Dla kompletności, jeśli „AllowOverride All” nie rozwiąże problemu, możesz go zdebugować za pomocą:
Uruchom
apachectl -S
i sprawdź, czy masz więcej niż jeden host nazw. Możliwe, że httpd szuka .htaccess innego DocumentRoot.Użyj
strace -f apachectl -X
i poszukaj, skąd się ładuje (lub nie ładuje) .htaccess z.źródło