Hoe kan ik het gedeelte ".php?variabele=" weren uit mijn hyperlink zonder de variabele zelf te verwi

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Robin Vancuyck

Robin Vancuyck

22/08/2014 11:15:30
Quote Anchor link
Hey,

Ik vraag me af of er een manier bestaat om bepaalde informatie uit de hyperlink in de adresbalk van je pagina te weren zonder de eigenlijke variabele te verwijderen?

vb. ik heb een pagina www. ... .be/provincie.php?provincie=Limburg en dit zou indien mogelijk www. ... .be/provincie Limburg moeten worden waarbij dat hij nog steeds weet dat hij de informatie uit die specifieke variabele moet gebruiken.

Mvg,
 
PHP hulp

PHP hulp

17/04/2024 00:30:33
 
Gerhard l

gerhard l

22/08/2014 11:21:23
Quote Anchor link
Google eens op: url rewrite htaccess. Indien je er niet uitkomt heb ik wel wat voorbeelden.
 
Tortuga web

tortuga web

22/08/2014 14:14:48
Quote Anchor link
@gerhard: Ik ben wel geïnteresseerd in voorbeelden, want ik heb dezelfde vraag. En na 3 dagen goochelen en worstelen had ik het opgegeven. Alle uitleg die ik heb kunnen vinden over htaccess, heeft mij de oplossing niet kunnen brengen.
 
Gerhard l

gerhard l

22/08/2014 14:28:59
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
RewriteEngine on
RewriteRule ^([^/]*)/$ index.php?page=$1 [NC,L]    
RewriteRule ^([^/]*)$ index.php?page=$1 [NC,L]    
RewriteRule ^([^/]*)/([^/]*)/$ index.php?page=$1&id=$2 [NC,L]    


Je begint met RewriteEngine on voordat je de rewrites gaan maken in je .htacess bestand, deze zet je in de gewenste map, vaak de root.

1e voorbeeld met 1 var:
^ begin van de rewrite rule
([^/]*) Dit betekent alle tekens: a-zA-Z0-9 enz.
/ Slash op het einde van de url
$ einde van de opgevraagde url
index.php?page=$1 dit is waar je de opgevraagde url heen wil sturen, waar $1 de ([^/]*) is.
[NC,L] De link doorsturen

2e voorbeeld met 1 var zonder slash
^ begin van de rewrite rule
([^/]*) Dit betekent alle tekens: a-zA-Z0-9 enz.
$ einde van de opgevraagde url
index.php?page=$1 dit is waar je de opgevraagde url heen wil sturen, waar $1 de ([^/]*) is.
[NC,L] De link doorsturen

3e voorbeeld met 2 vars
^ begin van de rewrite rule
([^/]*)/([^/]*)/ Dit betekent alle tekens: a-zA-Z0-9 enz. Alleen nu dus gescheiden door een slash, waardoor er 2 vars opstaan.
$ einde van de opgevraagde url
index.php?page=$1&id=$2 dit is waar je de opgevraagde url heen wil sturen, waar $1 en $2 de vars zijn.
[NC,L] De link doorsturen
Gewijzigd op 22/08/2014 15:05:20 door gerhard l
 
Ivo P

Ivo P

22/08/2014 14:38:07
Quote Anchor link
[^/] betekenT alle tekens, maar niet een /

* staat voor 0 of meer stuks
+ zou staan voor 1 of meer

Als je op regel 4 die /$ vervangt door /?$ dan mag de laatste / ook weggelaten worden
 
Tortuga web

tortuga web

22/08/2014 15:06:21
Quote Anchor link
Het werkt nog steeds niet. Ik heb dit:
In de root het bestand index.php, dat steeds de inhoud ophaalt van de diverse pagina´s. Deze staan in /content.
De pagina´s roep ik aan met index.php?page=pagina. Als ik de htaccess in de root zet, dus bij de index.php, dan krijg ik de melding 'page not found'. Zet ik m in de map content, dan gebeurt er niks en blijf ik in de adresregel index.php?page=pagina zien.
 
Gerhard l

gerhard l

22/08/2014 15:21:08
Quote Anchor link
Van welk bestand krijg je de not found dan? Controller of het pad klopt. Doe anders eerst in je index.php
een print_r($_GET); en kijk of de htaccess je de goede vars meegeeft.

En Ivo bedankt voor de toevoeging ;)
 
Tortuga web

tortuga web

22/08/2014 16:55:57
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (!isset($_GET['page'])) {
    //url-variable doesnt exit, call homepage
    include('content/index.inc.php');
}
else {
    //url-variable exits, call file
    $page = 'content/'.$_GET['page'].'.inc.php';
    if (file_exists($page)) {
        //page exits, show page
        include($page);
    }
    else {
        //page doesnt exit, show text
        echo 'This page you called for, doesnt exit!';
    }
}

Dit is het deel uit index.php waar de inhoud steeds aangeroepen wordt. De inhoud staat dus in de subdirectory /content.
Een aangeroepen pagina staat in de adresregel weergegeven als: www.website.com/index.php?page=pagina.
Dat wil ik dus veranderen in: www.website.com/pagina.
In de htaccess heb ik dit staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
RewriteEngine On
RewriteBase /
RewriteRule ^([^/]*)/?$ index.php?page=$1 [NC,L]

Vraag: Moet de htaccess in de root of in /content?
Vraag: Moet ik de subdirectory ergens vermelden?
De exacte foutmelding (not-foundmelding) is dit:
Not Found
The requested URL /index.php was not found on this server.
Apache/2.4.9 (Win64) PHP/5.5.12 Server at 127.0.0.1 Port 80
 
Ivo P

Ivo P

22/08/2014 17:59:29
Quote Anchor link
- in root
- nee
- je zou een / voor index.php?page=$1 moeten hebben
 
Tortuga web

tortuga web

23/08/2014 09:01:04
Quote Anchor link
Niet met, niet zonder / werkt het, ik blijf de not-found-melding houden.
Heb het trouwens ook even met de online website getest, in geval het met wampserver te maken heeft, maar ook daar precies het zelfde.
Gewijzigd op 23/08/2014 09:02:53 door tortuga web
 
Tortuga web

tortuga web

25/08/2014 17:06:46
Quote Anchor link
Echt niemand een idee wat er fout is in bovenstaand script?
 
Goto Learn

Goto Learn

26/08/2014 00:18:23
Quote Anchor link
Probeer dit eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^([^/]*)/?$ index.php?page=$1 [NC,L]
Gewijzigd op 26/08/2014 00:19:17 door Goto Learn
 
Tortuga web

tortuga web

26/08/2014 09:41:37
Quote Anchor link
Ook niet, blijf de 404 not found page houden.
 
Ivo P

Ivo P

26/08/2014 10:13:27
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
RewriteEngine On
RewriteBase /

# eerst afvangen dat we niets doen als de file gevonden wordt
RewriteCond %{REQUEST_FILENAME}         -f [OR]
RewriteCond %{REQUEST_FILENAME}         -d
RewriteRule ^ - [L]

# de rest (mits geen / in url ) naar index.php
RewriteRule ^/([^/]*)/?$ /index.php?page=$1 [R]


De eerste / is volgens mij afhankelijk van je server settings.

Ik heb een [R] geplaatst zodat wat beter zichtbaar is wat gebeurt.
Werkt het, dan daar weer [L] van maken
 
Tortuga web

tortuga web

26/08/2014 10:35:19
Quote Anchor link
Als ik jouw volledige code in mijn htaccess plak, dan gebeurt er niets. Geen NotFound pagina, maar evenmin een wijziging in de adresregel.

Ivo P op 26/08/2014 10:13:27:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
# eerst afvangen dat we niets doen als de file gevonden wordt
RewriteCond %{REQUEST_FILENAME}         -f [OR]
RewriteCond %{REQUEST_FILENAME}         -d
RewriteRule ^ - [L]


Dit begrijp ik niet. Waarom niets doen als de file gevonden wordt? Ik wil toch juist wel wat doen als de file gevonden wordt, want ik wil dat de adresregel dan herschreven wordt.
 
Bart V B

Bart V B

26/08/2014 10:49:26
Quote Anchor link
:) je weet toch wel dat de hyperlinks niet zomaar automatisch veranderen hè.
Dus je link moet wel iets worden van http://www.domain.tld/foo/bar
 
Ivo P

Ivo P

26/08/2014 11:03:06
Quote Anchor link
Men gebruikt de term "herschrijven" nogals eens op een manier dat het lijkt dat je het je net anderom voorstelt.

de rewriterules moeten er voor zorgen dat het niet bestaande

http://example.com/contact

wordt vertaald (op de server) naar http://example.com/index.php?page=contact

maar je wilt niet dat http://example.com/images/foto.jpg ook iets wordt als
http://example.com/index.php?page=images/foto.jpg of zo.

En al helemaal niet dat /index.php wordt vertaald naar index.php?page=index.php en dan weer naar /index.php?page=index.php?page=index.php etc

Daarom de eerste paar regels "als de file bestaat, doe niets"
 
Goto Learn

Goto Learn

26/08/2014 14:09:08
Quote Anchor link
Das raar, hier op mijn "test-localhost" werkt het prima. Heb je rewrite mod wel geactiveerd in Apache (of wat je ook gebruikt?)?
 
Robin Vancuyck

Robin Vancuyck

27/08/2014 12:19:23
Quote Anchor link
Ik kan mijn .htaccess file, om deze bovenstaande voorgestelde veranderingen uit te proberen, niet vinden. Heeft iemand een idee waar ik die kan vinden.
 
Ivo P

Ivo P

27/08/2014 12:52:46
Quote Anchor link
.htaccess is een hidden file (want filename begint met een punt)

en staat doorgaans in je document root.
 
Robin Vancuyck

Robin Vancuyck

11/09/2014 11:56:13
Quote Anchor link
ik kan de juiste .htaccess file nog steeds niet vinden. Ik vind enkel de htaccess files van mijn andere projecten in drupal ed. Is het mogelijk dat ik die van php gewoon niet heb of dat die eerst nog moet aangemaakt worden op een of andere manier.

Mvg,
 

Pagina: 1 2 volgende »



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.