Rewriterules i.c.m. Multiviews geven vreemd resultaat

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Ariën  -
Beheerder

- Ariën -

08/03/2015 12:31:16
Quote Anchor link
Voor mijn website wil ik de non-www url doorsturen naar de www-URL. Nu heb ik een rewriterule gefabriceerd die zijn werk wel goed doet, alleen de Multiviews lijken roet in het eten te gooien...

Ik heb dit in mijn .htaccess staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
RewriteEngine On
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 -
 
PHP hulp

PHP hulp

20/05/2024 15:23:55
 
Dos Moonen

Dos Moonen

08/03/2015 14:28:53
Quote Anchor link
Mocht je een VPS hebben dan stel ik voor dat je twee verschillende virtual hosts maakt zoals het http naar https voorbeeld op https://httpd.apache.org/docs/2.2/rewrite/avoid.html

Als dat geen optie is kan ik nu even geen alternatief bedenken.
 
Thomas van den Heuvel

Thomas van den Heuvel

08/03/2015 16:32:21
Quote Anchor link
Heb je al vastgesteld wanneer het mis gaat?

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.
 
- Ariën  -
Beheerder

- Ariën -

08/03/2015 19:35:44
Quote Anchor link
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

Leg eens uit? Ik weet toch al wat ik verstuur?
Gewijzigd op 08/03/2015 19:36:39 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

08/03/2015 19:43:53
Quote Anchor link
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
 
- Ariën  -
Beheerder

- Ariën -

08/03/2015 19:46:04
Quote Anchor link
En daarom heb ik die Multiview-option ook al naar boven verplaatst, om dit uit te sluiten.
Zonder deze hele reguliere expressie werkt die Multiviews juist prima.
 
Eeyk Vd noot

Eeyk Vd noot

08/03/2015 19:46:05
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.nl$ [nc]
RewriteRule ^(.*)$ http://www.domain.nl/$1 [r=301,nc]
?>


dit moet werken ik gebruik dit ook.
 
- Ariën  -
Beheerder

- Ariën -

08/03/2015 19:47:11
Quote Anchor link
Eeyk Vd noot op 08/03/2015 19:46:05:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.nl$ [nc]
RewriteRule ^(.*)$ http://www.domain.nl/$1 [r=301,nc]
?>


dit moet werken ik gebruik dit ook.

Ik zie weinig verschillen met die van mij? Jij gebruikt ook MultiViews?
 
Ozzie PHP

Ozzie PHP

08/03/2015 19:47:12
Quote Anchor link
Hier nog een andere variant:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTP_HOST} ^(.+)$ [NC]
RewriteRule ^(.*)$ http://www\.%1/$1 [R=301,L]
 
- Ariën  -
Beheerder

- Ariën -

08/03/2015 19:59:22
Quote Anchor link
Ik ga het uitproberen, maar het lijkt alsof alles op hetzelfde neerkomt, en niks doet met wat er na de hostname komt. En die .php wil ik dus wegfilteren.
Gewijzigd op 08/03/2015 20:08:25 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

08/03/2015 20:10:39
Quote Anchor link
^ 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?

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...
 
Ozzie PHP

Ozzie PHP

08/03/2015 20:11:27
 
- Ariën  -
Beheerder

- Ariën -

08/03/2015 20:15:11
Quote Anchor link
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 -
 
Thomas van den Heuvel

Thomas van den Heuvel

08/03/2015 20:26:46
Quote Anchor link
Maar de URLs met www doen dit niet. Waar komt dit verschil vandaan :].
 
- Ariën  -
Beheerder

- Ariën -

08/03/2015 20:32:23
Quote Anchor link
Daar ben ik juist benieuwd naar, plus hoe we dit kunnen uitzoeken en tackelen.
En dat is tevens ook mijn vraag ;-)
 
Thomas van den Heuvel

Thomas van den Heuvel

08/03/2015 21:10:41
Quote Anchor link
Wellicht een default config die roet in het eten gooit (en specifiek werkt op hostnames die starten met www)?

Alternatief: multiviews toch uitzetten en dan met rewriterules .php er aanplakken.
Zie hier en hier, maar dat is wellicht niet optimaal...
 
Dos Moonen

Dos Moonen

08/03/2015 21:40:04
Quote Anchor link
Misschien multiviews alleen aanzetten als de host correct is?
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?
 
- Ariën  -
Beheerder

- Ariën -

08/03/2015 23:11:39
Quote Anchor link
Multiviews kan ik uittesten, en dan overstappen op rewriterules, maar dat moet ik goed uittesten, gezien er een aantal randvoorwaarden zijn binnen mijn CMS.

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 -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.