Aha.
Har det nogen betydning om /-tegnet står i parenteser ?
Skal det egentligt ikke stå som [/] i stedet for (/) ?
Kender i en god let forståelig guide til regulært udtryk i .htaccess filer. Det skal være på begynder niveau for fatter det bare ikke særlig godt.
Jeg prøver og rode mere med det når jeg er hjemme og ser hvordan det virker i forskelige situationer.
nu jeg langt fra ekspert på det her område, men jo du skulle godt kunne bruge [] ville jeg tro.
så vidt jeg ved betyder () bare at den returnere det. så du kan tilgå det via $
etc.
RewriteRule ^user/([0-9]+)/(.+)(/)?$ /profile.php?username=$2&uid=$1
# $1 = ([0-9]+)
# $2 = (.+)
Ok nu bruger jeg dette.
RewriteRule ^ub/([0-9]+)/?.*$ scooterhjemmeside/billeder.php?$1 [L]
Men jeg vil gerne have at hvis der er en titel (for eksempel "noget-tekst") i urlen så SKAL der være et / tegn foran.
Ligesom : localhost/ub/123/noget-tekst
Jeg vil ikke have at localhost/ub/123noget-tekst skal være gyldigt.
Hvordan gør man det ?
du ønsker at kunne bruge:
localhost/ub/123/noget-tekst
localhost/ub/123/
localhost/ub/123
kan ikke lige se hvordan man skulle lave den relg i htaccess, men kan forkalre dig hvordan med PHP.
ville lave et wildcard og tjekke med PHP
localhost/ub/*
RewriteRule ^ub/(.+)(/)?$ scooterhjemmeside/billeder.php?query=$1
- $id = 0;
- $text = "";
- $query = (isset($_GET["query"])?array_filter(explode("/",$_GET["query"])):false);
- if($query){
- switch(count($query)){
- case 1: # localhost/ub/123 og localhost/ub/123/
- $id = $query[0];
- $text = "ikke angivet";
- break;
- case 2: # localhost/ub/123/noget-tekst og localhost/ub/123/noget-tekst/
- $id = $query[0];
- $text = $query[1];
- break;
- default: break;
- }
- }
ikke testet, men noget i den stil.
edit:
evt lige put noget validering på inde i switch, om det nu er tal/text osv..
Indlæg senest redigeret d. 24.04.2012 17:45 af Bruger #3427