Avatar billede nicholas- Nybegynder
06. september 2007 - 23:30 Der er 14 kommentarer og
1 løsning

rewrite .htcaccess og %20

Hej

Jeg sidder og roder med min .htaccess og rewrite rules.

Det fungerer faktisk helt fint. Mit problem er bare at i nogle af linksene er der mellemrum, så der kommer %20 ind i stedet for ligesom http://minside.dk/showone-Test%201-3.html. - Det synes jeg ikke er særlig pænt, så hvordan får jeg den til at skrive - i stedet for %20?

Et andet spørgsmål er hvordan jeg får lukket af for url'er. Så hvis man f.eks. i stedet for http://minside.dk/showone-Test%201-3.html skriver http://minside.dk/?page=showone&navn=Test%201&id=3.html, så kommer den med en fejlmeddelse(404).

Min .htcaccess ser sådan her ud:

RewriteEngine on

RewriteRule ^([_a-zA-Z0-9]+).html$ /index.php?page=$1 [L]

RewriteRule ^show-([^/.]+)-?([^/.]+).html$ /index.php?page=show&navn=$1&kategori=$2 [L]


RewriteRule ^showone-?([^/.]+)-([0-9]+).html$ /index.php?page=showone&navn=$1&id=$2 [L]
Avatar billede nicholas- Nybegynder
07. september 2007 - 00:54 #1
Hvis det kan gøre det lettere, så er alle sider (undtagen submit-siderne), styret af index.php. Har tilføjet RewriteRule ^index.html /index.php [L], så hvis man på en måde kan blokere index.php så er det måske let..


bare lige en tilføjelse
Avatar billede erikjacobsen Ekspert
07. september 2007 - 08:37 #2
Man kan ikke have blanke i URL-er. Enten skal en blank stå som "%20" eller som "+"
Avatar billede nicholas- Nybegynder
07. september 2007 - 14:50 #3
Vil ikke have blanke, og ved godt man ikke kan, men vil have udskiftet %20 til en streg (-).
Avatar billede nyhuus Nybegynder
07. september 2007 - 14:53 #4
Jeg bruger denne funktion


[code]
function remSpac($text, $replace) {
  $text = str_replace(chr(32), $replace, $text);
  return $text;
}
[/code]

for at bruge den skal du skrive remSpace($dinTekst, "-");

- kan udskiftes med andre tegn hvis du fx hellere vil have en _
Avatar billede nicholas- Nybegynder
08. september 2007 - 02:35 #5
Lyder som sådan noget jeg skal bruge.

Kan du give et nærmere eksempel?
Avatar billede nyhuus Nybegynder
08. september 2007 - 11:37 #6
Ja, altså det skal bruges inde i din php kode hvor de udskriver dine links.

jeg har fx en titel og et id.

function har jeg i en side der hedder function.php

først inkludere jeg function.php for at få functionen med.

der efter laver jeg en echo med mit link

echo '<a href="/readmore/'.$id.'/'.$title.'.php"><Læs nyheden '.$title.' her</a>';

sådan vil det normalt se ud, men så med min function vil det så sådan her ud

echo '<a href="/readmore/'.$id.'/'.remSpace($title, "_").'.php"><Læs nyheden '.$title.' her</a>';

jeg putter kun min function omkring min titel fordi det er der hvor der er et mellemrum. i den første linie jeg skrev ville et mellemrum bliver til %20, i den anden vil det bliver til _ jeg bruger det selv på alle mine links på www.webdesignz.dk
Avatar billede nicholas- Nybegynder
08. september 2007 - 18:14 #7
Det gider den slet ikke :/

er der en fejl et stedet, eller kan jeg ikke finde ud af bruge funktionen?
Avatar billede nyhuus Nybegynder
08. september 2007 - 19:19 #8
Det kan jeg ikke fortælle dig uden at du viser lidt kode

prøv at vis et stykke koder hvor du bruger functionen
Avatar billede nicholas- Nybegynder
09. september 2007 - 11:36 #9
Her er en meget simpel test side hvor jeg bruger det...

<?

function remSpac($text, $replace) {
$text = str_replace(chr(32), $replace, $text);
return $text;
}

$id = 2;
$title = "hej med dig";
echo '<a href="/readmore/'.$id.'/'.$title.'.php">Læs nyheden '.$title.' her</a>';

echo "<br>";

echo '<a href="/readmore/'.$id.'/'.remSpace($title, "_").'.php">Læs nyheden '.$title.' her</a>';




?>
Avatar billede nyhuus Nybegynder
09. september 2007 - 11:49 #10
ja okay, det er så min fejl, i det jeg har givet dig her har jeg ved funktionen skrevet "remSpac" det skal være "remSpace" prøv at ændre det så funktionen vil bliver dette istedet.

[code]
function remSpace($text, $replace) {
$text = str_replace(chr(32), $replace, $text);
return $text;
}
[/code]
Avatar billede nicholas- Nybegynder
09. september 2007 - 11:57 #11
Mange tak :) Nu virker det, og præcis det jeg søgte.

Kender du ellers noget til rewrite rules og blokere adgang?
Avatar billede nyhuus Nybegynder
09. september 2007 - 13:15 #12
nej ikke rigtig, jeg bruger det kun på en simpel måde :)

altså kun med at lave fake urls.
Avatar billede nicholas- Nybegynder
09. september 2007 - 13:31 #13
Det kan være du kan hjælpe lidt alligevel igen..

Jeg har disse to regler:

RewriteRule ^show-([^/.]+)-?([^/.]+).html$ /index.php?page=show&navn=$1&kategori=$2 [L]

RewriteRule ^showone-([^/.]+)-([0-9]+).html$ /index.php?page=showone&navn=$1&id=$2 [L]

Reglerne virker fint, men det jeg gerne vil er at fjerne showone og show. - Men hvis jeg fjerner det, så læser den reglerne som ens, og tager den som står øverst. Man skal tilføje en condition, men ved du hvilken?
Avatar billede nyhuus Nybegynder
09. september 2007 - 16:23 #14
Nej jeg aner ikke hvad "condition" er :)
Avatar billede nicholas- Nybegynder
09. september 2007 - 17:20 #15
Prøver at oprette et nyt spørgsmål. Mange tak for hjælpen til det andet ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester