Rewriterules i.c.m. Multiviews geven vreemd resultaat
Ik heb dit in mijn .htaccess staan:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Options +FollowSymLinks
Options MultiViews
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Options +FollowSymLinks
Options MultiViews
Echter steeds als er een bestand wordt aangeroepen (/news bijv. wat in werkelijkheid dus news.php is) komt de .php-extentie er steeds bij.
http://site.nl/news/1337 wordt dan: http://site.nl/news.php/1337
http://www.site.nl/news/1337 blijft verder gewoon zo, zoals het prima hoort.
Iemand enig idee hoe dit kan, en wat de oplossing is?
Ik heb zojuist al geprobeerd om de Options Multiviews bovenaan te zetten, maar dat maakt niks uit.
Gewijzigd op 08/03/2015 12:32:32 door - Ariën -
https://httpd.apache.org/docs/2.2/rewrite/avoid.html
Als dat geen optie is kan ik nu even geen alternatief bedenken.
Mocht je een VPS hebben dan stel ik voor dat je twee verschillende virtual hosts maakt zoals het http naar https voorbeeld op Als dat geen optie is kan ik nu even geen alternatief bedenken.
Voor de redirect, of erna? Wat is de waarde van $1?
Stuur de waarde eens naar een script: <nieuwe locatie>/test.php?test=$1
En als je nog aan het testen bent is wellicht het weglaten van de 301 statuscode handig, anders heb je op den duur misschien onvoorspelbare resultaten omdat je browser/iets anders de (mogelijk ongewenste) shortcut onthoudt.
Thomas van den Heuvel op 08/03/2015 16:32:21:
Heb je al vastgesteld wanneer het mis gaat?
Als ik een na de hostname een bestand opvraag zonder .php-extentie.
Quote:
Voor de redirect, of erna? Wat is de waarde van $1?
Stuur de waarde eens naar een script: <nieuwe locatie>/test.php?test=$1
Stuur de waarde eens naar een script: <nieuwe locatie>/test.php?test=$1
Leg eens uit? Ik weet toch al wat ik verstuur?
Gewijzigd op 08/03/2015 19:36:39 door - Ariën -
Quote:
Leg eens uit? Ik weet toch al wat ik verstuur?
Weet je dat zeker? :) Zolang je niet weet wat de oorzaak is moet je niets uitsluiten (assume nothing).
Mogelijk wordt http://site.nl/news/1337 al vertaald naar http://site.nl/news.php/1337 alvorens je geredirect wordt naar http://www.site.nl/news.php/1337.
Dit wil je misschien uitsluiten zodat je doelgerichter kunt zoeken naar de achterliggende oorzaak.
EDIT: nu ik je eerdere bericht lees: er zit blijkbaar al op een of andere manier een verschil tussen domeinen die niet met www beginnen, en domeinen die dit wel doen, gegeven de omzettingen die al plaatsvinden. Waar komt dat dan vandaan?
Gewijzigd op 08/03/2015 19:47:23 door Thomas van den Heuvel
Zonder deze hele reguliere expressie werkt die Multiviews juist prima.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.nl$ [nc]
RewriteRule ^(.*)$ http://www.domain.nl/$1 [r=301,nc]
?>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.nl$ [nc]
RewriteRule ^(.*)$ http://www.domain.nl/$1 [r=301,nc]
?>
dit moet werken ik gebruik dit ook.
Eeyk Vd noot op 08/03/2015 19:46:05:
Ik zie weinig verschillen met die van mij? Jij gebruikt ook MultiViews?
Gewijzigd op 08/03/2015 20:08:25 door - Ariën -
Mogelijk spelen inmiddels gecachede redirects je parten?
Wat je ook zou kunnen doen is een optionele (.php) eraf strippen, dat zou altijd moeten werken? Maar dat is het onjuist gedrag omzeilen ipv oplossen...
Thomas van den Heuvel op 08/03/2015 20:10:39:
^ zie mijn EDIT: nu ik je eerdere bericht lees: er zit blijkbaar al op een of andere manier een verschil tussen domeinen die niet met www beginnen, en domeinen die dit wel doen, gegeven de omzettingen die al plaatsvinden. Waar komt dat dan vandaan?
Ik snap je niet?
De rewriterule werkt verder wel, maar omdat ik Multiviews gebruik (en daar stap ik niet 1-2-3 vanaf) lijkt dit te worden genegeerd, en krijg ik dus bij elke bestand die .php-extentie erachter. En dat gebeurt alleen als ik dus de non-www URL gebruik.
Gewijzigd op 08/03/2015 20:17:52 door - Ariën -
Maar de URLs met www doen dit niet. Waar komt dit verschil vandaan :].
En dat is tevens ook mijn vraag ;-)
Alternatief: multiviews toch uitzetten en dan met rewriterules .php er aanplakken.
Zie hier en hier, maar dat is wellicht niet optimaal...
Zie de canonial hostname sectie: http://httpd.apache.org/docs/2.4/rewrite/remapping.html
Daar zeggen ze ook dat de netste optie verschillende virtual hosts is, daarna een if, en daarna mod rewrite...
Dus als je je .htacces nou eens opdeelt in twee secties?
Een binnen een if voor de incorrecte hostname, en de andere in een if voor de correcte hostname?
De oplossing van Dos Moonen zou een mogelijkheid kunnen zijn. Ik kan met meerdere virtual-hosts werken, maar de vraag is hoe DirectAdmin daar mee omgaat. Ik wil niet teveel afwijken van standaardconfiguraties. Volgens mij kan je die if ook gewoon al in .htaccess gebruiken.
Maar de vraag blijft, waarom gebeurt deze vreemde gebeurtenis?
Gewijzigd op 08/03/2015 23:13:11 door - Ariën -