Page 1 of 1
[OPGELOST] RewriteRule in combi met ErrorDocument
Posted: Tue Jan 24, 2012 12:06 pm
by frankmanl
In .htacces wil ik een aantal zaken combineren:
1) www. forceren - als je
domein.nl intypt kom je terecht op
www.domein.nl
Hiervoor gebruik ik:
Code: Select all
RewriteCond %{HTTP_HOST} !^www.domein.nl$
RewriteRule ^(.*)$ http://www.domein.nl/$1 [R=301]
2) directory naam uit URL verbergen - mijn installatie staat in
http://www.domein.nl/cmsms/, maar ik wil dat /cmsms/ niet wordt getoond in de adresbalk.
Hiervoor gebruik ik:
Code: Select all
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule !^cmsms(/?|/.+)$ /cmsms%{REQUEST_URI} [L]
3) error 404 (pagina niet gevonden) direct laten doorverwijzen naar de homepage in /cmsms/.
In .htaccess neem ik deze regel op:
En
domein.nl/index.html ziet er zo uit:
Code: Select all
<meta http-equiv="refresh" content="0;URL=http://www.domein.nl/cmsms/" />
Je zou zeggen dat dit allemaal moet werken, echter de combinatie van de
ErrorDocument en
RewriteRule !^cmsms(/?|/.+)$ /cmsms%{REQUEST_URI} [L] geeft een probleem - de errorafhandeling wordt niet gedaan conform mijn .htaccess, maar er wordt een standaard 404 NOT FOUND melding gegeven.
Wanneer ik de ReRwriteRule uitschakel werkt de errorafhandeling wel, maar dan is in de adresbalk de map /cmsms/ zichtbaar.
Het complete .htaccess bestand ziet er zo uit:
Code: Select all
AddHandler x-httpd-php53 .php
# redirect error 404 page not found
ErrorDocument 404 /index.html
Options -Indexes
RewriteEngine On
RewriteOptions inherit
# volgende regels vrijmaken voor verbergen van /cmsms in de URL
RewriteCond %{SCRIPT_FILENAME} !-f
#RewriteRule !^cmsms(/?|/.+)$ /cmsms%{REQUEST_URI} [L]
# laat domein.nl doorverwijzen naar www.domein.nl
RewriteCond %{HTTP_HOST} !^www.domein.nl$
RewriteRule ^(.*)$ http://www.domein.nl/$1 [R=301]
Ik heb de ReWriteRule maar even uitgeschakeld, omdat ik de foutafhandeling op dit moment belangrijker vind dan het verbergen van /cmsms.
Hoe krijg ik dit voor elkaar?
Frank
Re: RewriteRule in combi met ErrorDocument
Posted: Tue Jan 24, 2012 12:27 pm
by deactivated010521
----------
Re: RewriteRule in combi met ErrorDocument
Posted: Tue Jan 24, 2012 1:11 pm
by frankmanl
OK, maar die werkt alleen voor niet gevonden pagina's binnen het cmsms-systeem.
Ik zit met het volgende:
De site was voorheen opgezet in domein.nl en submappen.
Ik heb nu een cms geïnstalleerd in domein.nl/cmsms/.
Alle bestanden van de oude site heb ik verwijderd, dus in domein.nl staat alleen nog het bestand index.html (dat direct doorschakelt naar het cms) en de submap cmsms met daarin het hele cms.
Google verwijst nog naar bijv. domein.nl/submapx/bestand.html.
Dàt bestand bestaat niet en ik wil dat er dan een error 404 wordt aangeroepen die direct doorschakelt naar het cms.
F.
Re: RewriteRule in combi met ErrorDocument
Posted: Tue Jan 24, 2012 3:23 pm
by frankmanl
Ik ben intussen wel verder gekomen.
* Ik heb de error afhandeling verwijderd uit het .htaccess bestand.
* Heb in CMSMS een error 404 pagina aangemaakt die nu alle fouten afvangt en doorschakelt naar
http://www.domein.nl/cmsms/ (de homepage). Die 404-pagina ziet er zo uit:
Code: Select all
<meta http-equiv="refresh" content="0;URL={cms_selflink href='home' }">{content}
Dit heb ik uitgebreid getest en alle 404-fouten worden inderdaad via deze pagina afgehandeld.
* De .htaccess ziet er nu zo uit:
Code: Select all
AddHandler x-httpd-php53 .php
Options -Indexes
RewriteEngine On
RewriteOptions inherit
# volgende regels vrijmaken voor direct doorverwijzen naar cmsms-map en verbergen van /cmsms
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule !^cmsms(/?|/.+)$ /cmsms%{REQUEST_URI} [L]
# laat domein.nl doorverwijzen naar www.domein.nl
RewriteCond %{HTTP_HOST} !^www.domein.nl$
RewriteRule ^(.*)$ http://www.domein.nl/$1 [R=301]
* In de config.php staat deze regel:
Code: Select all
$config['root_url'] = 'http://www.domein.nl';
Er is nog één probleem overgebleven: bij alle pagina's is
/cmsms uit de URL verdwenen (dus
http://www.domein.nl/pagina) behalve bij de homepage, waar in de adresbalk staat
http://www.domein.nl/cmsms/
Wanneer ik over het menu beweeg geeft de button van de homepage als koppelingslokatie
http://www.domein.nl/, maar na klikken komt er toch
http://www.domein.nl/cmsms/ in de adresbalk te staan.
Wie helpt me dit laatste stukje oplossen?
Frank
Re: RewriteRule in combi met ErrorDocument
Posted: Tue Jan 24, 2012 3:34 pm
by deactivated010521
----------
Re: RewriteRule in combi met ErrorDocument
Posted: Tue Jan 24, 2012 5:30 pm
by frankmanl
Arnoud, de error-afhandeling heb ik gedaan zoals je opgaf, dat werkt nu prima.
Ook de map
/cmsms is niet meer zichtbaar in de URL, bij geen enkele pagina.
Maar het forceren van
www. lukt nog niet.
De .htaccess is nu
Code: Select all
AddHandler x-httpd-php53 .php
Options -Indexes
RewriteEngine On
RewriteOptions inherit
RewriteBase /cmsms
# direct doorverwijzen naar cmsms-map en verbergen van /cmsms uit de URL
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule !^cmsms(/?|/.+)$ /cmsms%{REQUEST_URI} [L]
# laat wilbertvandersteen.nl doorverwijzen naar www.wilbertvandersteen.nl
RewriteCond %{HTTP_HOST} !^wilbertvandersteen.nl$
RewriteRule ^(.*)$ http://www.wilbertvandersteen.nl/$1 [R=301]
Als je nu
wilbertvandersteen.nl invoert in de adresbalk krijg je weliswaar de homepage, maar er staat geen
www. in de URL.
Bovendien klopt in Firefox op een of andere wijze het font niet (Chrome, IE, Opera en Safari tonen dat probleem niet). Dat hoort op die pagina
Rockwell te zijn, maar is een default browser-font zo te zien. Ook na legen van de browserbuffer blijft dit probleem.
Zodra je een menu-item kiest is de lay-out in orde en staat ook de
www. in de URL.
Als ReWriteCond heb ik overigens ook gebruikt
Code: Select all
RewriteCond %{HTTP_HOST} !^www.wilbertvandersteen.nl$
en
Code: Select all
RewriteCond %{HTTP_HOST} !^www\.wilbertvandersteen\.nl$
Deze syntaxen ben ik al zoekende ook tegengekomen, maar het maakt allemaal niets uit.
In de config.php staat nog steeds deze regel:
Code: Select all
$config['root_url'] = 'http://www.domein.nl';
dus zonder
/cmsms aan het einde.
Waar heb ik nu nog een fout zitten?
F.
Re: RewriteRule in combi met ErrorDocument
Posted: Tue Jan 24, 2012 5:40 pm
by deactivated010521
----------
Re: RewriteRule in combi met ErrorDocument
Posted: Tue Jan 24, 2012 6:39 pm
by frankmanl
edit 25-1-12: ben er nog een tijd mee bezig geweest, maar niets werkt. Ik leg het nu eerst maar eens bij de host neer.
Helaas, dat helpt allemaal niets.
Weghalen van die eerste twee regels resulteert in een fout, dus ik heb ze weer teruggeplaatst:
De pagina verwijst niet op een juiste manier door
Firefox heeft vastgesteld dat de server het verzoek voor dit adres doorverwijst op een manier die nooit zal eindigen.
Het wijzigen van [R=301] naar [L,R=301] maakt geen verschil - de www. wordt nog steeds niet toegevoegd aan de URL.
Dat font speelt ook nog steeds op - een van de raarste dingen die ik heb gezien, want alle css werkt naar behoren, behalve het font. Ik heb het als volgt gedefinieerd
Code: Select all
font: 100%/1.4 Helvetica, Verdana, Arial, sans-serif;
en ik werk met @font-face, dat font Rockwell weergeeft. Het font dat wordt weergegeven is vreemd genoeg Times New Roman - het default font van Firefox.
Re: RewriteRule in combi met ErrorDocument
Posted: Wed Jan 25, 2012 9:45 am
by deactivated010521
----------
Re: RewriteRule in combi met ErrorDocument
Posted: Wed Jan 25, 2012 12:16 pm
by frankmanl
Opgelost, met dank aan mijn host (maar ook aan Arnoud!

)
Nog even de .htaccess die ik had:
Code: Select all
AddHandler x-httpd-php53 .php
Options -Indexes
RewriteEngine On
RewriteOptions inherit
RewriteBase /cmsms
# direct doorverwijzen naar cmsms-map en verbergen van /cmsms uit de URL
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule !^cmsms(/?|/.+)$ /cmsms%{REQUEST_URI} [L]
# laat wilbertvandersteen.nl doorverwijzen naar www.wilbertvandersteen.nl
RewriteCond %{HTTP_HOST} !^wilbertvandersteen.nl$
RewriteRule ^(.*)$ http://www.wilbertvandersteen.nl/$1 [R=301]
Hiervan zegt mijn host:
Ik zie dat u een [L] heeft staan bij de volgende regel:
RewriteRule !^cmsms(/?|/.+)$ /cmsms%{REQUEST_URI} [L]
De [L] houdt in dat volgende regels niet meer worden gelezen, waardoor de laatste 2 regels niet meer worden uitgevoerd. Als u de [L] weghaalt op de betreffende regel ziet u dat www wel voor de domeinnaam wordt gezet.
Verder heeft u de regel RewriteBase /cmsms opgenomen. Dat klopt volgens mij ook niet, want u wilt dat de regels gelden vanaf de root directory. Ik heb voor die regel een # gezet, zodat dit wordt gezien als commentaar.
Zijn aanwijzingen opvolgend heb ik het helemaal voor elkaar:
www. wordt geforceerd, de map
cmsms/ wordt niet getoond in de URL en omdat de www. nu steeds wordt geforceerd heb ik ook het font-probleem niet meer.
Dank voor de hulp, ik ga hier even goed notitie van maken.
Oh, voor de volledigheid, de .htaccess ziet er nu zo uit:
Code: Select all
AddHandler x-httpd-php53 .php
Options -Indexes
Options +FollowSymLinks
RewriteEngine On
RewriteOptions inherit
# direct doorverwijzen naar cmsms-map en verbergen van /cmsms in URL
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule !^cmsms(/?|/.+)$ cmsms%{REQUEST_URI}
# laat domein.nl doorverwijzen naar www.domein.nl
RewriteCond %{HTTP_HOST} ^domein\.nl$ [NC]
RewriteRule ^(.*)$ http://www.domein.nl [L,R=301]