.htaccess wanneer geen request?

Status
Niet open voor verdere reacties.

ClaudiaWD

Gebruiker
Lid geworden
21 jul 2011
Berichten
109
Beste,

Ik ben momenteel met een privé project bezig. Heb inmiddels met htaccess voor elkaar gekregen dat ik met een $_REQUEST['page'] de pagina uit de URL krijg, alleen is het nu de bedoeling dat wanneer je op de website komt (dus de url heeft nog geen toevoeging maar is bijv. alleen www.domein.nl), hij er in feite www.domein.nl/index.php?page=home van maakt (alleen dat is natuurlijk niet zichtbaar in de url balk).

Snap eigenlijk niets van htaccess, maar dit is wat ik tot zover heb:

HTML:
RewriteEngine On
RewriteBase /

###Pages###
RewriteRule ^([^/]*)/$ /twd/?page=$1 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ /twd/?page=$1&outcome=$2&mtid=$3 [L]
RewriteRule ^([^/]*)/$ /admin/?page=$1 [L]

## URL END SLASHING ##
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domein.nl/twd/$1/ [L,R=301]

Kan iemand mij helpen? ;-)
 
Je kunt een rewriterule daarvoor toevoegen, of je hoofddomein gewoon redirecten naar de juiste pagina.

uit mijn hoofd is je hoofddomein rewrite ^$. gokje:
Code:
RewriteRule ^$ /index.php?page=home [L]
 
Met mijn hoofddomein is het me al wel eens gelukt. Ik heb echter nu een hoofddomein waar een website op staat die goed staat. Het project waar ik nu mee bezig ben staat dus in een map op die website. Hoe doe ik de bovenstaande regel dan in dat geval? De map is /twd/.

Bedankt in ieder geval voor je hulp!

En kun je het wellicht ook uitleggen wat je dan eigenlijk typt?
 
Dit ligt eraan wat je nu precies bedoelt?

wil je dat "site/twd/" naar "site/twd/?Page=home" gaat? Het is bij rewrites belangrijk om erg secuur te zijn, maar ze zijn niet heel erg moeilijk.

rewrites werken met "regular expressions" wat een vorm van patroonherkenning is
 
Ik gok zoiets:

Code:
RewriteRule ^twd/?$ /twd/index.php?page=home [L]
 
En die moet ik dan plaatsen in de htaccess in de map van twd, of in de htaccess in de root map?
Heb het zojuist al in de map geplaatst, maar dan gebeurd er nog niets volgens mij.

Of is dit gewoon een stukje waar ik zelf nog aan moet knutselen? ;-)
 
Er zijn 2 soorten HTACCESS. deze moet in de "algemene" voor de hele site. Als je het in de map plaatst is de uitdrukking iets anders, volgens mij
 
Hm, de letterlijke code werkt zo in ieder geval niet (bij mij niet althans). Ik heb nu in mijn 'root' htaccess:

#AddHandler x-httpd-php4 .php
Options FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteRule ^twd/?$ /twd/index.php?page=home [L]
 
Heb je deze rule bovenaan geplaatst? anders wordt mogelijk afgevangen door een eerdere rule
 
Wat ik net heb gestuurd is mijn gehele root htaccess. Die andere heb ik nu even niet bij de hand (de htaccess in de map twd).
 
Heb het gisteren nog even op mijn testserver geprobeerd en de rule werkt op mijn server, dus ik vermoed dat inderdaad de volgorde een probleem vormt.
 
Ik doe het waarschijnlijk verkeerd.
In de public_html map van mijn domein heb ik de volgende .htaccess:
PHP:
#AddHandler x-httpd-php4 .php
Options FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteRule ^twd/?$ /twd/index.php?page=home [L]

In de map /twd/ (in public_html) heb ik vervolgens de volgende .htaccess:
PHP:
RewriteEngine On
RewriteBase /

###Pages###
RewriteRule ^([^/]*)/$ /twd/?page=$1 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ /twd/?page=$1&outcome=$2&mtid=$3 [L]
RewriteRule ^([^/]*)/$ /admin/?page=$1 [L]

## URL END SLASHING ##
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domein.nl/twd/$1/ [L,R=301]

Uiteraard heb ik ipv domein.nl wel mijn goede domein ingevuld.
 
Als je de rules in je twd directory wegcommentarieerd gaat het dan wel goed?

mogelijk herschrijft de eerste rule je redirect van je hoofdpagina. Of er gaat natuurlijk nog wat anders fout. Moeilijk om dat te debuggen vanaf hier.
 
Nee, dan werkt het nog steeds niet.
Ik heb een voorbeeldscriptje zoals het wel werkt.

Dat is in de subdirectory de htaccess die ik hier al heb geplaatst (zie mijn eerdere bericht).
In de root plaats ik vervolgens het volgende:

PHP:
######################################################
###########DOORLINK NAAR SUBMAP NIEUWE SITE###########
######################################################

#RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?www.domein.nl$
RewriteCond %{REQUEST_URI} !^/twd/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /twd/$1
RewriteCond %{HTTP_HOST} ^(www.)?www.domein.nl$
RewriteRule ^(/)?$ twd/index.php?page=home [L]

Alleen dit is weer niet helemaal wat ik bedoel. Hiermee gaat namelijk mijn domein.nl naar de twd map, en dat is niet de bedoeling.
 
Eh ja? omdat je niet controleerd of /twd voorkomt. Die laatste regel zegt letterlijk:

Als domein wordt aangeroepen met niks erachter, ga naar : twd/index.php?page=home [L]

Hier moet je dus controleren of /twd wordt aangeroepen, niet niks. De condities op regel 6 en 11 zijn ook niet juist:

Indien gegaan wordt naar www.www.domein.nl OF www.domein.nl dan ... Ik neem aan dat je bedoeld: www.domein.nl of domein.nl
 
Inmiddels heb ik in de twd directory de htaccess regel toegevoegd, met in totaliteit de volgende htaccess:

PHP:
RewriteEngine On
RewriteBase /

RewriteRule ^(/twd)?$ twd/index.php?page=home

###Pages###
RewriteRule ^([^/]*)/$ /twd/?page=$1 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ /twd/?page=$1&outcome=$2&mtid=$3 [L]
RewriteRule ^([^/]*)/$ /admin/?page=$1 [L]

## URL END SLASHING ##
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domein.nl/twd/$1/ [L,R=301]

De redirect werkt prima, alleen nu werken de overige 6 regels niet meer..
 
Heb het even getest op mijn testserver en kan het niet reproduceren.

de regels worden netjes uitgevoerd

localhost/twd/ gaat naar localhost/twd/index?page=home
en
localhost/twd/henk gaat naar localhost/twd/index?page=henk
 
Laatst bewerkt:
Thanks voor de hulp allemaal.

Het is in ieder geval zo dat het op de huidige manier maar half werkt (voor mij althans). Hij linkt netjes door zo naar www.domein.nl/twd/index.php?page=home (zonder dat index.php... te weergeven). Het is echter de bedoeling dat wanneer je bijv. op een link klikt op de website die in twd staat, hij er van maakt: www.domein.nl/twd/contact/ bijvoorbeeld. Dat doet hij netjes, alleen haalt hij vervolgens de $_REQUEST['page'] nog steeds op als home.. Dat gaat er nu elke keer nog verkeerd.
Als ik dan weer de bovenste regel weghaal, werkt dat weer wel.
 
Net mijn vorige post ge-edit, maar ik kan het dus niet reproduceren.

dit is mijn index.php:

PHP:
<a href="http://localhost/twd/lolbroek/">test</a> <br>

<?php print_r ($_GET); ?>

als ik op de "test" link klik zie ik dat mijn index veranderd naar de verwachte pagina. Heb je geverifieerd dat het probleem niet ergens in PHP zit?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan