Mod Rewrite Probleem
Ik was aan het proberen, mijn urls 'vriendelijk' te maken, met mod rewrite. Ik kom er alleen niet meer uit, ik zie niet wat ik fout doe.
Dit is wat ik heb:
.htaccess (staat in de root)
Code (php)
1
2
3
4
2
3
4
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^test/(.*)/ditdan/(.*)/ index.php?test=$1&ditdan=$2
RewriteRule ^test/(.*)/ index.php?test=$1
RewriteEngine On
RewriteRule ^test/(.*)/ditdan/(.*)/ index.php?test=$1&ditdan=$2
RewriteRule ^test/(.*)/ index.php?test=$1
test code index.php (test opstelling)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if(isset($_GET['test']) && $_GET['test'] == "1"){
echo "1 werkt<br>";
if(isset($_GET['ditdan']) && $_GET['ditdan'] == "5"){
echo "2 werkt<br>";
}
}else{
echo "<br>Geen Mod rewrite<br>";
echo "- <a href=index.php?test=1>Link test 1</a><br>";
echo "- <a href=index.php?test=1&ditdan=5>Link test 2</a><br>";
echo "<br>Wel Mod rewrite <br>";
echo "- <a href=/vriendelijkeurls/index/1/>Link test 1</a><br>";
echo "- <a href=/vriendelijkeurls/index/1/5/>Link test 2</a><br>";
}
?>
if(isset($_GET['test']) && $_GET['test'] == "1"){
echo "1 werkt<br>";
if(isset($_GET['ditdan']) && $_GET['ditdan'] == "5"){
echo "2 werkt<br>";
}
}else{
echo "<br>Geen Mod rewrite<br>";
echo "- <a href=index.php?test=1>Link test 1</a><br>";
echo "- <a href=index.php?test=1&ditdan=5>Link test 2</a><br>";
echo "<br>Wel Mod rewrite <br>";
echo "- <a href=/vriendelijkeurls/index/1/>Link test 1</a><br>";
echo "- <a href=/vriendelijkeurls/index/1/5/>Link test 2</a><br>";
}
?>
Wat moet het worden:
dit: index.php?test=1&ditdan=5 moet
dit: index/1/5/ of index/test/1/ditdan/5/worden
Wat er fout gaat:
Hij komt niet uit bij "1 werkt" of bij "2 werkt". Hij komt dus niet bij de if.
De link is dus niet goed ofzo?
Ik hoop dat iemand ziet wat ik fout doe.
(Het complete domein is: www.sitenaam.nl/vriendelijkurls/index.php)
Alvast bedankt,
Gewijzigd op 01/01/1970 01:00:00 door Davy Jansen
dus:
RewriteRule ^test/(.*)/ditdan/(.*)/ index.php?test=$1&ditdan=$2 [L]
RewriteRule ^test/(.*)/ index.php?test=$1 [L]
Nee, geeft geen verschil?
edit: ik heb hem nu uit de submap gehaald. En nu heb ik deze code:
Code (php)
1
2
3
4
2
3
4
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^/index/(.*)/(.*)/ vriendelijk.php?test=$1&ditdan=$2 [L]
RewriteRule ^/index/(.*)/ vriendelijk.php?test=$1 [L]
RewriteEngine On
RewriteRule ^/index/(.*)/(.*)/ vriendelijk.php?test=$1&ditdan=$2 [L]
RewriteRule ^/index/(.*)/ vriendelijk.php?test=$1 [L]
En als ik nu op een link klik, dan gaat hij ook echt naar de index toe, ipv naar vriendelijk.php ??
Gewijzigd op 01/01/1970 01:00:00 door Davy Jansen
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^secure/(.+)/(.+) index.php?option=$1&cmd=$2
RewriteRule ^pictures/(.+) images/$1
Dat houd in dat dan mijn links naar de index.php er zo uit zien:
http://www.website.nl/secure/1/1
en de htaccess bestand staat dan ook in de root van de website
En voor de plaatjes heb ik dan:
http://www.website.nl/pictures/plaatje.jpg
en de plaatjes staat in de root/images/
Maar ik had ook graag dit willen doen:
RewriteRule ^secure/(.+)/(.+) index.php?option=$1
RewriteRule ^secure/(.+)/(.+) index.php?option=$1&cmd=$2
RewriteRule ^pictures/(.+) images/$1
Zodat ik naargelang de aantal optie's voor de php script de juiste vorm zou aanroepen. Dit werkt wel maar dan krijg ik de ellende van als ik op deze link zou klikken:
http://www.website.nl/secure/1/1
wordt dan:
http://www.website.nl/secure/1/1/1
enzovoorts
http://www.website.nl/secure/1/1/1/1
En wat ik daar ook aan probeer te sleutelen met een base rewrite of andere methode's dan lukt het niet. Maar goed ook geen groot probleem natuurlijk gezien ik kan leven met éen vorm om de index.php aan te roepen.
Wellicht heb je hier wat aan maar ik ben ook pas voor het eerst er mee begonnen en daarmee ben ik dus niet de verkozen persoon c.q guru.
Code (php)
1
2
3
4
2
3
4
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)/(.*)/ vriendelijk.php?test=$1&ditdan=$2 [L]
RewriteRule ^(.*)/ vriendelijk.php?test=$1 [L]
RewriteEngine On
RewriteRule ^(.*)/(.*)/ vriendelijk.php?test=$1&ditdan=$2 [L]
RewriteRule ^(.*)/ vriendelijk.php?test=$1 [L]
en de link is nu: www.sitenaam.nl/index/1/
bestand.php
<a href=/index/1/>Link test 1</a>
en dat werkt ook :)
Alleen de $_GET werkt nu nog niet?
Code (php)
1
2
3
4
5
2
3
4
5
<form action="" method="get"><textarea name='vak'>test</textarea><input name="invoer" type="submit" /></form>
<?php
var_dump($_GET);
?>
<?php
var_dump($_GET);
?>
Als dit werkt dan werkt $_GET en is de fout ergens elders te zoeken.
Gewijzigd op 01/01/1970 01:00:00 door Danny Roelofs
Dit stond in mijn eerste $_GET: index.php/1 ipv: 1
en ik controleerde alleen ff op if(isset($_GET['test']) && $_GET['test'] == "1"){
en niet op: index.php/1/, maar het werkt nu wel helemaal :)
Ik begin het nu langsaam ook een beetje door te krijgen.
Bedankt voor je (jullie) hulp ;)
Wat zijn jou problemen dan??
Gewijzigd op 01/01/1970 01:00:00 door Davy Jansen