.htaccess ErrorDocument 404 verschijnt niet

Ik heb een server van de AWS EC2-service die draait op Linux ubuntu en ik heb apache, php en mysql geïnstalleerd.

Ik heb een .htaccess-bestand toegevoegd aan mijn documenthoofdmap /var/www/html.

Ik heb deze code erin ingevoerd:
ErrorDocument 404 /var/www/html/404.phpen het wordt nog steeds niet weergegeven.

Ik bleef dit commando meerdere keren invoeren: sudo service httpd restartom de server te herstarten, maar er werden geen wijzigingen weergegeven…

Hoe kan ik dit oplossen… Heb ik iets verkeerd gedaan?


Antwoord 1, autoriteit 100%

Houd er eerst rekening mee dat het herstarten van httpd niet nodig is voor .htaccess-bestanden. .htaccess-bestanden zijn specifiek voor mensen die geen root hebben – dwz geen toegang hebben tot het httpd-serverconfiguratiebestand en de server niet opnieuw kunnen opstarten. Omdat je de server opnieuw kunt opstarten, heb je geen .htaccess-bestanden nodig en kun je de hoofdserverconfiguratie rechtstreeks gebruiken.

Ten tweede, als .htaccess-bestanden worden genegeerd, moet u controleren of AllowOverride correct is ingesteld. Zie http://httpd.apache.org/docs/2.4/mod/ core.html#allowoverridevoor details. U moet er ook voor zorgen dat het in het juiste bereik is ingesteld, dat wil zeggen in het juiste blok in uw configuratie. Zorg ervoor dat u bijvoorbeeld NIETdegene in het blok bewerkt.

Ten derde, als je er zeker van wilt zijn dat een .htaccess-bestand daadwerkelijk wordt gelezen, stop er dan afval in.
Een ongeldige regel, zoals “INVALID LINE HERE”, in uw .htaccess-bestand, resulteert in een 500-serverfout wanneer u uw browser naar de map met dat bestand richt. Als dit niet het geval is, hebt u AllowOverride niet correct geconfigureerd.


Antwoord 2, autoriteit 42%

  1. Apache mod_rewrite module inschakelen

    a2enmod rewrite

  2. voeg de volgende code toe aan /etc/apache2/sites-available/default

    AllowOverride All

  3. Herstart apache

    /etc/init.d/apache2 restart


Antwoord 3, autoriteit 17%

Als je al het bovenstaande hebt geprobeerd, wat allemaal geldige en goede antwoorden zijn, en je htaccess-bestand werkt niet of wordt niet gelezen, verander dan de instructie in het bestand apache2.conf. Onder Ubuntu is het pad /etc/apache2/apache2.conf

Wijzig de <Directory>-instructie die verwijst naar uw openbare webpagina’s, waar het htaccess-bestand zich bevindt. Verander van AllowOverride Nonein AllowOverride All

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

Ik had hetzelfde probleem en vond het antwoord en de uitleg op de Ubuntu Ask! forum https://askubuntu.com/questions/421233/enabling-htaccess -bestand-naar-herschrijf-pad-niet-werkend


Antwoord 4, autoriteit 7%

Voor Ubuntu,
Voer eerst deze opdracht uit:-

sudo a2enmod rewrite

Bewerk vervolgens het bestand /etc/apache2/sites-available/000-default.confmet nano of vim met deze opdracht:-

sudo nano /etc/apache2/sites-available/000-default.conf

Voeg dit vervolgens toe aan het bestand 000-default.confna de regel DocumentRoot /var/www/html. Als uw root html-map iets anders is, schrijf dat dan:-

<Directory "/var/www/html">
  AllowOverride All
</Directory>

Na alles gedaan te hebben, herstart apache met het commando sudo service apache2 restart


Antwoord 5, autoriteit 2%

Hoogstwaarschijnlijk is AllowOverride ingesteld op Geen. in de sectie Directory van apache2.conf in de map /etc/apache2

Probeer het in te stellen op AllowOverride All


Antwoord 6, autoriteit 2%

Volg gewoon 3 stappen

  1. Schakel mode_rewrite in met de volgende opdracht

    sudo a2enmod herschrijven

Wachtwoord wordt gevraagd. Dus voer je wachtwoord in

  1. Update uw bestand 000-default.confof default.confop /etc/apache2/sites-available/map. je kunt het niet rechtstreeks bewerken. dus gebruik het volgende commando om te openen

    sudo gedit /etc/apache2/sites-available/000-default.conf

Of
sudo gedit /etc/apache2/sites-available/default.conf

je krijgt

DocumentRoot /var/www/html

OF

DocumentRoot /var/www

lijn. Voeg erna de volgende code toe.

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

Maak de gebruiker het directory-tagpad hetzelfde als getoond in uw bestand.

  1. Herstart je apache-server met het volgende commando

    sudo-service apache2 opnieuw opstarten


Antwoord 7, autoriteit 2%

Mijn ervaring is dat /var/www/ directory-richtlijnen submap virtualhost-richtlijnen voorkomen. Dus als je alle suggesties hebt geprobeerd en nog steeds niet werkt en je gebruikt virtualhosts, probeer dan dit;

1 – Zorg ervoor dat u
AllowOverride Allrichtlijn in
/etc/apache2/sites-available/example.com.conf

2 – Controleer /var/www/ Directory-richtlijnen in /etc/apache2/apache2.conf(mogelijk op regel 164), die eruitziet als ;

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Als er een AllowOverride None-instructie is, verander deze dan in
AllowOverride Allof gewoon escape-regel


Antwoord 8, autoriteit 2%

Standaard verbiedt Apache het gebruik van een .htaccess-bestand om herschrijfregels toe te passen, dus

Stap 1 — Mod_rewrite inschakelen (indien niet ingeschakeld)
Eerst moeten we mod_rewrite activeren. Het is beschikbaar, maar niet ingeschakeld met een schone Apache 2-installatie.

$ sudo a2enmod rewrite

Hierdoor wordt de module geactiveerd of wordt u gewaarschuwd dat de module al is ingeschakeld. Om deze wijzigingen door te voeren, start u Apache opnieuw.

$ sudo systemctl restart apache2

mod_rewrite is nu volledig ingeschakeld. In de volgende stap zullen we een .htaccess-bestand opzetten dat we zullen gebruiken om herschrijfregels voor omleidingen te definiëren.

Stap 2 — .htaccess instellen
Open het standaard Apache-configuratiebestand met nano of uw favoriete teksteditor.

$ sudo nano /etc/apache2/sites-available/000-default.conf

In dat bestand vind je een blok dat op de eerste regel begint. Voeg binnen dat blok het volgende nieuwe blok toe, zodat je configuratiebestand er als volgt uitziet. Zorg ervoor dat alle blokken goed zijn ingesprongen.

/etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
    <Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
    . . . 
</VirtualHost>

Sla het bestand op en sluit het. Om deze wijzigingen door te voeren, start u Apache opnieuw.

$ sudo systemctl restart apache2

Gereed. Je .htacess zou moeten werken.
Deze link kan iemand daadwerkelijk helpenhttps://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04


Antwoord 9

Ga naar /etc/apache2/apache2.conf

Je moet dat bestand bewerken (je moet rootrechten hebben). Wijzig de directorytekst zoals hieronder:

<Directory /var/www/>
Opties Indexen FollowSymLinks
Alles toestaanOverschrijven
Vereisen dat alles is verleend

Nu moet je apache opnieuw opstarten.

service apache2 herstart


Antwoord 10

Ik heb dit gebruik gewist. Door deze site te gebruiken klik hier, volg de stappen, dezelfde stappen volgen tot de ubuntu-versie 18.04


Antwoord 11

In WampServerOpen WampServer Tray icoon —-> Apache —> Apache-modules —>rewrite_module


Antwoord 12

gebruik RewriteBase /{your folder}/ op uw .htaccess


Antwoord 13

Voor de volledigheid, als “AllowOverride All” uw probleem niet oplost, kunt u dit probleem opsporen met:

  1. Voer apachectl -Suit en kijk of je meer dan één namevhost hebt. Het kan zijn dat httpd op zoek is naar .htaccess van een andere DocumentRoot.

  2. Gebruik strace -f apachectl -Xen zoek waar het .htaccess laadt (of niet laadt).

Other episodes