Avatar billede gedekid Nybegynder
02. juni 2009 - 13:31 Der er 6 kommentarer og
1 løsning

htaccess url rewrite

Hej eksperter,

jeg sidder med en .htaccess jeg skal ha' til at lave nogle pænere URLs, men der sker ikke rigtig noget - så et eller andet gør jeg forkert..

jeg har en url der hedder catalogue.php?menuID=1&title=titel

den vil jeg gerne ha' til at hedde /catalogue/titel/

Skal lige siges at jeg kører den på localhost..

Min .htaccess ser p.t. sådan her ud:

DirectoryIndex index.php

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^calatogue/([0-9]+)$ /catalogue.php?menuID=$1&title=$2 [L]

og URL ser stadig sådan ud i både HTML og adresselinie:

catalogue.php?menuID=1&title=title


--------------

menuID er id'et på menupunktet fra databasen og title er så menutitlen...
Avatar billede showsource Seniormester
02. juni 2009 - 22:27 #1
Jeg er ikke haj til mod_rewrite ( heller ikke ), men du får næppe en url til at være:
/catalogue/titel/
og så kunne få fat i menuID og title, medmindre du ændrer rewriterule

Denne virker for mig, så php får fat i menuID og title:

RewriteRule ^calatogue/([^/]+)/([^/]+)/?$ /catalogue.php?menuID=$1&title=$2 [L]

Derudover, for at kunne bruge .htaccess, skal du tillade det for det dir du vil bruge det i.
Det gør du i din httpd.conf
Og når apache ikke vil som du ønsker, så tjek gerne error.log !
Avatar billede showsource Seniormester
02. juni 2009 - 22:27 #2
Avatar billede gedekid Nybegynder
03. juni 2009 - 09:24 #3
Det ser ud til at virke... _MEN_ jeg er så lidt i tvivl om hvordan jeg skal omskrive mine URL's i PHP (første gang jeg leger med mod_rewrite)...

Min menu udskrives således:


    function leftItems() {
       
        $items = "SELECT * FROM leftmenu";
        $items_res = safe_query($items)or die(mysql_error());
       
        while($items_row = mysql_fetch_array($items_res)) {
            if($items_row["menuID"] == 1) {
                print '<li class="topItem"><a href="catalogue.php?title='. $items_row["title"] .'&menuID='. $items_row["menuID"] .'">'. $items_row["title"] .'</a></li>';
            } else {
                print '<li><a href="catalogue.php?title='. $items_row["title"] .'&menuID='. $items_row["menuID"] .'">'. $items_row["title"] .'</a></li>';
            }           
       
        }
    }
Avatar billede showsource Seniormester
03. juni 2009 - 09:35 #4
<a href="catalogue/'. $items_row["title"] .'/'. $items_row["menuID"] .'/">'. $items_row["title"] .'</a>

Vil jeg mene.
Avatar billede gedekid Nybegynder
03. juni 2009 - 09:47 #5
So simple :)

Jeg takker! Smider du et svar, så er der point ?
Avatar billede showsource Seniormester
03. juni 2009 - 10:13 #6
Ok

Du har ALTID et tal som menuid ?
Og ALTID tekst som titel ?

RewriteRule ^calatogue/([0-9]+)/([A-Za-z]+)/?$ /catalogue.php?menuID=$1&title=$2 [L]
Avatar billede gedekid Nybegynder
03. juni 2009 - 10:15 #7
Jeps, det har jeg... menuID'et kommer fra databasen og er menupunktets unikke ID
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
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

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