Mod_rewrite inschakelen voor Apache 2.2

Ik heb een nieuwe installatie van Apache 2.2 op mijn Vista-machine, alles werkt prima, behalve mod rewrite.

Ik heb geen commentaar meer gegeven

LoadModule rewrite_module modules/mod_rewrite.s

maar geen van mijn herschrijfregels werkt, zelfs niet simpele zoals

RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404

Alle regels die ik gebruik werken op mijn hosting, dus ze zouden in orde moeten zijn, dus mijn vraag is, is er iets verborgen in de apache-configuratie dat het herschrijven van mods zou kunnen blokkeren?


Antwoord 1, autoriteit 100%

Om mod_rewritete gebruiken, kun je het volgende commando in de terminal typen:

sudo a2enmod rewrite

Herstart apache2 na

sudo /etc/init.d/apache2 restart

of

sudo service apache2 restart

of volgens de nieuwe uniforme systeembesturingsmanier

sudo systemctl restart apache2

Vervolgens kun je, als je wilt, het volgende .htaccess-bestand gebruiken.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

Het bovenstaande .htaccess-bestand (indien geplaatst in uw DocumentRoot) zal al het verkeer omleiden naar een index.php-bestand in de DocumentRoottenzij het bestand bestaat.

Dus, laten we zeggen dat je de volgende directorystructuur hebt en httpdocs is de DocumentRoot

httpdocs/
    .htaccess
    index.php
    images/
        hello.png
    js/
        jquery.js
    css/
        style.css
includes/
    app/
        app.php

Elk bestand dat in httpdocs bestaat, wordt aan de aanvrager aangeboden met behulp van de hierboven getoonde .htaccess, maar al het andere wordt doorgestuurd naar httpdocs/index.php. Uw applicatiebestanden in includes/appzijn niet toegankelijk.


Antwoord 2, autoriteit 22%

Voor mijn situatie had ik

RewriteEngine On

in mijn .htaccess, samen met de module die werd geladen, en het werkte niet.

De oplossing voor mijn probleem was om mijn vhost-item te bewerken om

AllowOverride all

in het gedeelte <Directory>voor de betreffende site.


Antwoord 3, autoriteit 8%

Probeer instelling: AllowOverride All.


Het tweede meest voorkomende probleem is dat mod rewrite niet is ingeschakeld: a2enmod rewriteen start vervolgens apache opnieuw.


Antwoord 4, autoriteit 8%

Als geen van bovenstaande werkt, probeer dan /etc/apache2/sites-enabled/000-default te bewerken

bijna bovenaan vind je

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

Verander de AllowOverride Nonein AllowOverride All

dit werkte voor mij


Antwoord 5, autoriteit 5%

In Ubuntu:

Uitvoeren:

a2enmod rewrite

en dan:

service apache2 restart

mod_rewriteis nu ingeschakeld!


Antwoord 6, autoriteit 4%

Nieuwe apache-versie is op de een of andere manier gewijzigd. Als uw apache-versie 2.4 is, moet u naar /etc/apache2/gaan. Er zal een bestand zijn met de naam apache2.conf. Je moet die bewerken (je zou root-rechten moeten hebben). Wijzig directorytekst op deze manier

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

Herstart nu apache.

service apache2 reload

Hoop dat het werkt.


Antwoord 7, autoriteit 3%

Er zijn veel manieren waarop u dit probleem kunt oplossen, als u de oorzaak van het probleem kent.

Probleem 1

Ten eerste kan het een probleem zijn dat uw apache de module mod_rewrite.c niet heeft geïnstalleerd of ingeschakeld.

Om deze reden zou je het als volgt moeten inschakelen

  1. Open je console en typ erin, dit:

    sudo a2enmod rewrite

  2. Herstart je apache-server.

    service apache2 restart

Probleem 2

  1. Als het niet werkt, kan het ook zijn dat u, als aanvulling op het bovenstaande, de override-regel van het apache-conf-bestand (ofwel apache2.conf, http.conf of 000-default-bestand) moet wijzigen.

  2. Zoek “Directory /var/www/”

  3. Verander “Geen overschrijven” in “Alles overschrijven”

Probleem 3

Als je een foutmelding krijgt waarin staat dat de herschrijfmodule niet gevonden is, dan is dat waarschijnlijk je userdir-module
is niet ingeschakeld. Om deze reden moet u het inschakelen.

  1. Typ dit in de console:

    sudo a2enmod userdir

  2. Probeer vervolgens de herschrijfmodule in te schakelen als deze nog niet is ingeschakeld (zoals hierboven vermeld).

Als u hier meer over wilt lezen, kunt u deze site bezoeken: http://seventhsoulmountain.blogspot.com/2014/02/wordpress-permalink-ubuntu-problem-solutions.html


Antwoord 8, autoriteit 3%

Open terminal en typ a2enmod rewrite, het zal je mod_rewritemodule voor Apache inschakelen.

Ga dan naar /etc/apache2/sites-availableen bewerk het standaardbestand. (Hiervoor moet u schrijfrechten hebben voor dit bestand en de map die beschikbaar is voor sites.)

Vervang hieronder door bestaande regels 4 tot 14

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>

Herstart nu uw apache door /etc/init.d/apache2 restartof service apache2 restart

Doe opnieuw een schone URL-test en deze keer zal deze worden doorstaan.


Antwoord 9

<bewerken>

Ik merkte net dat je mod_rewrite.s zei in plaats van mod_rewrite.so – ik hoop dat dit een typefout is in je vraag en niet in het httpd.conf-bestand! 🙂

</edit>

Ik ben meer gewend om Apache op Linux te gebruiken, maar ik moest dit onlangs doen.

Kijk eerst eens in uw Apache-installatiemap. (Ik neem aan dat je het hier in “C:\Program Files” hebt geïnstalleerd)

Kijk in de map: “C:\Program Files\Apache Software Foundation\Apache2.2\modules” en zorg ervoor dat er een bestand met de naam mod_rewrite.so in staat. (Het zou moeten zijn, het wordt geleverd als onderdeel van de standaardinstallatie.

Open vervolgens “C:\Program Files\Apache Software Foundation\Apache2.2\conf” en open httpd.conf. Zorg ervoor dat de regel:

#LoadModule rewrite_module modules/mod_rewrite.so

heeft geen commentaar:

LoadModule rewrite_module modules/mod_rewrite.so

Als u de RewriteEngine standaard wilt inschakelen, wilt u misschien iets toevoegen als

<IfModule mod_rewrite>
    RewriteEngine On
</IfModule>

aan het einde van je httpd.conf-bestand.

Als dit niet het geval is, zorg er dan voor dat u opgeeft

RewriteEngine On

ergens in uw .htaccess-bestand.


Antwoord 10

Ik heb dit net gedaan

sudo a2enmod rewrite

dan moet je de apache-service opnieuw opstarten door het volgende commando

sudo service apache2 restart

Antwoord 11

Oude thread, ik wil dat gewoon niet toestaan om AllowOverride op alles te zetten, maar gebruik een specifieke mod die je wilt gebruiken,

AllowOverride mod_rewrite mod_mime

En deze regel mag niet meer worden becommentarieerd

LoadModule rewrite_module modules/mod_rewrite.so

Referenties


Antwoord 12

Gebruik onderstaande opdracht

sudo a2enmod rewrite

En de herstart apache via onderstaande opdracht

sudo service apache2 restart

Antwoord 13

Er is natuurlijk meer dan één manier om het te doen, maar ik zou willen voorstellen om de meer standaard te gebruiken:

ErrorDocument 404 /index.php?page=404

14

De eerste keer dat ik worstelde met Mod_rewrite-regels die mijn verkeer negeerde, leerde ik (frustrerend) dat ik ze in het verkeerde had geplaatst <VirtualHost>, wat betekende dat mijn verkeer zou negeren Alle van hen, ongeacht hoe goed ze waren. Zorg ervoor dat dit niet met u gebeurt:

# Change the log location to suit your system.
RewriteLog /var/log/apache-rw.log
RewriteLogLevel 2

Deze parameters zullen activeren als u een sierlijke herstart van Apache uitvoert, zodat u ze kunt recyclen in en het mod_rewrite-gedrag nauwlettend volgen. Zodra uw probleem is opgelost, draait u het rewritelogleLevel terug en vier het.

In 100% van mijn ervaring heb ik ontdekt dat de rewritelog me heeft geholpen het probleem te ontdekken met mijn herschrijfregels. Ik kan dit niet genoeg aanbevelen. Veel succes in je Troubleshooting!

Ook, deze bladwijzer is uw beste vriend:
http://httpd.apache.org/docs/2.2/mod/mod_rewrite .html # rewritelog

Other episodes