Apache Rewrite werkt niet goed.

Status
Niet open voor verdere reacties.

tombalfoort

Gebruiker
Lid geworden
25 sep 2006
Berichten
386
Hallo,

Ik draai een eigen server waar alles goed op gaat. Op een ding na. De Rewrite werkt niet lekker. Ik heb een wordpress site waar hij wel op werkt. Maar ook een site waar hij niet op wilt werken. Ik snap niet wat ik fout doe. Zie hier onder mijn bestanden + uitleg.

1. Het volgende bestand gemaakt in /etc/apache2/sites-available/site2 en ziet er zo uit:

Code:
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/site2/
        Servername xxxxxxxxxx
        ServerAlias xxxxxxxxxx

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

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

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


2. Daarna de site in apache geactiveerd met

Code:
sudo a2ensite site2

3. Daarna checkte ik of de mod_rewrite aan stond d.m.v.

Code:
a2enmod rewrite

De reactie die ik terug krijg van Apache:
Code:
Module rewrite already enabled

4. Daarna heb ik een .htaccess gemaakt in /var/www/site2/.htaccess met de volgende inhoud

Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

5. Daarna heb ik de configuratie van apache herladen

Code:
service apache2 reload

6. Ik blijf nu maar de melding 'Not Found' ontvangen. Ik snap niet wat ik fout doe.
In de configuratie staat namelijk AllowOverride All goed en ook de module is actief.
Voor de zekerheid heb ik apache helemaal herstart maar ook dit helpt niet. Ik kijk denk ik ergens over heen.
 
Is er wel een catchall voor "x".php? want het is heel goed mogelijk dat je rewriterule niet uitkomt op een goede naam.

als je dit doet:

RewriteRule ^([^\.]+)$ index.php [NC,L]

(aangenomen dat je wel een index.php hebt) gaat het dan wel goed?
 
Is er wel een catchall voor "x".php? want het is heel goed mogelijk dat je rewriterule niet uitkomt op een goede naam.

als je dit doet:

RewriteRule ^([^\.]+)$ index.php [NC,L]

(aangenomen dat je wel een index.php hebt) gaat het dan wel goed?

Helaas, dan krijg ik ook een 404 not found error.

Dit staat er dan in mijn .htaccess bestand.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ index.php [NC,L]
 
Ik heb nog eens gekeken,

Met de regel die u aangaf blijft het dus dat niet bestaande pagina's idd verwijzen naar index.php. Echter als ik dan bijv test opgeef ipv test.php krijg ik de melding not found. Als ik er dan .php (test.php) achter zet. Krijg ik de pagina wel te zien.
 
Dat kan kloppen. site.nl/test is namelijk een directory en geen file. Als je ook dirs af wil vangen moet je ook "-d" gebruiken
 
Dat kan kloppen. site.nl/test is namelijk een directory en geen file. Als je ook dirs af wil vangen moet je ook "-d" gebruiken

Hij moet ook verwijzen naar een bestand. Dus een -f (file). Dus de regel klopt eigenlijk wel. Alleen pakt hij hem niet. Andere rewrite rules werken wel op sites. Het zal dus een fout zijn in de code.

Ik dacht even simpel de extensie te verwijderen. Wat dus nog steeds niet lukt. Terwijl het volgens mij niet zo moeilijk moet zijn. Want de config file boven aan de site gebruik ik ook voor andere pagina's en daar werkt alles zonder problemen. Ook die directory's hebben .htaccess files.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan