Hov. Du er ikke logget ind.
DU SKAL VÆRE LOGGET IND, FOR AT INTERAGERE PÅ DENNE SIDE

Spørgsmål vedr. mod_rewrite af dynamiske URLS

Side 1 ud af 3 (29 indlæg)
Fra København N
Tilmeldt 16. Jun 10
Indlæg ialt: 35
Fra  enkelt-webdesign.dk Skrevet kl. 22:46
Hvor mange stjerner giver du? :

Kære Amino'er

Jeg er endt i en slags blindgyde, m.h.t at få ændret udseende af de urls der bliver skabt på baggrund af mit CMS.

Kort så vil jeg ændre en url som denne:

http://www.enkelt-webdesign.dk/index.php?sid=1&titel=FORSIDE+start+her

Til en url der ser således ud:

http://www.enkelt-webdesign.dk/FORSIDE

Jeg har brug for sid i url'en, til at finde de korrekte data i databasen til den side der er valgt, men jeg ønsker kun at vise en "custom made" seo-venlig url i browseren, efter et link er klikket på.

Der er således kun en fil, der henter indholdet fra databasen, afhængig af hvilket sid der er i $_GET variablen.

Min navigation er bygget således:

Jeg har kun vist selve a href, da det må være det relevante ifht spørgsmålet.

<a href="index.php?sid='.$sid.'&amp;titel='.urlencode($linknavn).'">'.$subjectlinklabel.'</a>

Jeg har prøvet flere ting i min .htacess fil, her er et udpluk: (Ingen af dem virker..)
.htacess fil:
#RewriteEngine on

#RewriteRule ^(\d+)/(.*)$ index.php?sid=$1&titel=$2

#RewriteRule ^(.*)/(.*)$ index.php?sid=$1&titel=$2

#RewriteRule ^(.*)/(.*)$ /index.php?sid=$1&titel=$2 [QSA,L]

#RewriteCond %{QUERY_STRING} ^sid=([0-9]+)
#RewriteRule ^index\.php /index.php?sid=$1&titel=$2 [R=301,L]
Det er desværre småt med baggrundsviden mht apaches mod_rewrite modul 
så jeg håber der er en eller flere der har forstand på dette, og har et forslag til hvordan det skal kodes.
Mange hilsner, 
Jan Klemmensen

SEO-venligt CMS.

Se vores juni tilbud her: www.enkelt-webdesign.dk

Fra København S
Tilmeldt 1. Feb 06
Indlæg ialt: 3528
Fra  Kim Tetzlaff ApS Kim Tetzlaff Ejendom Skrevet kl. 08:07
Hvor mange stjerner giver du? :

Den simple måde vil være at du laver en tabel hvor alle dine URL's samt SID ligger i. Når brugeren så henter fx domæne.dk/forside, kan du tage URL'en og se om den findes i den tabel, og hente SID og så ellers gøre som normalt.

Mod_rewrite delen vil så være en tand mere simpel:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Det der sker er at hvis ikke det er en reel fil eller mappe, så skal systemet tage fat i din index.php fil i roden. Det er så din index.php der skla sørge for at der sker det jeg skriver ovenfor.

Meget simpelt.

Samtidig får du også muligheden for at holde styr på om siden findes eller ikke, og dermed komme af med eventuel dobbelt indhold, da siden jo kun findes hvis den står i URL tabellen.

MVH Kim

MVH Kim

Ekspert i hastighedsoptimering og Teknisk SEO

Optimering og udvikling af hurtige hjemmesider, med mere end 25 års erfaring. Danmarks bedste hastighedsoptimering med speciale i wordpress. Wordpress hjemmeside

Fra København N
Tilmeldt 16. Jun 10
Indlæg ialt: 35
Fra  enkelt-webdesign.dk Skrevet kl. 16:29
Hvor mange stjerner giver du? :

Hej Kim, tak for dit svar!

Jeg har sat en række ind i den tabel der indeholder sid, samt alle de øvrige data til de forskellige sider.

Mener du at jeg skal lave mine links sådan her i stedet:

Lad og sige der her står en select query der henter url fra tabellen i DB..samt en while til at skabe alle links, og til sidst:

echo '<a href="index.php?url='.$url.'">'.$url.'</a>';

Så mine links ville se sådan ud: domænenavn.dk/index.php?url=Forside (f.eks)

Og så finde informationerne:

if(isset($_GET['url'])){

$sql = "SELECT id, url FROM subject WHERE url = {$_GET['url']}";

$result = mysqli_query($connection, $sql);

while($link = mysqli_fetch_array($result)){

$id = $link['id'];

$url = $link['url'];

    }

if($id == '1' && $url == "Forside"){

// Så findes siden, og hent informationer der er under det unikke id..

    }

}

På denne måde skal jeg jo tjekke samtlige links, om id=bestemt_værdi, og om det stemmer med at url=bestemt_værdi

Jeg er ikke sikker på jeg fik fat i den lange ende ifht at forstå dit svar, og er ikke sikker på at det jeg har skrevet her gavner dit forslag ifht mod_rewrite, da der jo stadig er "noget i $_GET", nemlig ['url'], bare istedet for ['sid']?

Mvh, Jan

SEO-venligt CMS.

Se vores juni tilbud her: www.enkelt-webdesign.dk

Fra København S
Tilmeldt 1. Feb 06
Indlæg ialt: 3528
Fra  Kim Tetzlaff ApS Kim Tetzlaff Ejendom Skrevet kl. 16:44
Hvor mange stjerner giver du? :

Nej, det er ikke sådan du skal skrive det, du skal fx skrive domæne.dk/forside hvor forside jo er URL'en den kan du så få fat på med $_server['REQUEST_URI'], og det er den du skal sammenligne med din URL i tabellen.

Hvad er dit niveau hvad angår PHP?

MVH Kim

Ekspert i hastighedsoptimering og Teknisk SEO

Optimering og udvikling af hurtige hjemmesider, med mere end 25 års erfaring. Danmarks bedste hastighedsoptimering med speciale i wordpress. Wordpress hjemmeside

Fra København S
Tilmeldt 1. Feb 06
Indlæg ialt: 3528
Fra  Kim Tetzlaff ApS Kim Tetzlaff Ejendom Skrevet kl. 16:51
Hvor mange stjerner giver du? :

Glemte lige at sige at det er en dårlig ide at lade knapnavn/ankertekst være den samme som URL'en. Både fordi man så vil kunne skabe dobbelt indhold ved brug af både store og små bogstaver, men også fordi det vil skabe nogle underlige URLs. så det vil være en god ide at adskille dem. sådan er det helt sikkert også på mange andre punkter.

MVH Kim

Ekspert i hastighedsoptimering og Teknisk SEO

Optimering og udvikling af hurtige hjemmesider, med mere end 25 års erfaring. Danmarks bedste hastighedsoptimering med speciale i wordpress. Wordpress hjemmeside

Fra København N
Tilmeldt 16. Jun 10
Indlæg ialt: 35
Fra  enkelt-webdesign.dk Skrevet kl. 16:58
Hvor mange stjerner giver du? :

Okay :-) 

Jeg vil umiddelbart sige at mit niveau i PHP er under det her.

Jeg havde håbet på at man kunne benytte mod_rewrite, og lade mine scripts være, og ad den vej få pæne urls, men det ser det ikke ud til :-)

Jeg har lavet mine sider, med "simple grimme urls", igennem databasen, og har ikke været i nærheden af $_SERVER['request_url'], og hvordan og hvornår man benytter den.

Så det flyver lidt hen over hovedet, men hvis jeg kan få noget at gå efter må jeg undersøge hvordan jeg kan gøre det.

Hvordan vil du f.eks benytte $_SERVER['request_url'], og få adgang til den valgte side i sådan et tilfælde her?

SEO-venligt CMS.

Se vores juni tilbud her: www.enkelt-webdesign.dk

Fra København N
Tilmeldt 16. Jun 10
Indlæg ialt: 35
Fra  enkelt-webdesign.dk Skrevet kl. 17:01
Hvor mange stjerner giver du? :

Det er dog kun i ovenstående eksempel, at jeg har ladet linkets navn være det samme som url'en, så langt så godt..

Vil man ikke kunne lade siderne være som de er, og benytte mod_rewrite til at opnå resultatet, eller hvad vil du mene om den fremgangsmåde?

SEO-venligt CMS.

Se vores juni tilbud her: www.enkelt-webdesign.dk

Fra København N
Tilmeldt 16. Jun 10
Indlæg ialt: 35
Fra  enkelt-webdesign.dk Skrevet kl. 17:21
Hvor mange stjerner giver du? :

Jeg er stædig, så her er et forsøg mere:

Noget i den stil:

<a href="index.php?'.$url.'">'.$linknavn.'</a>

Kan man så tjekke:

if($_SERVER['REQUEST_URI'])=='.$url.'{

// Find info til den valgte side her

}

:-)

Mvh, Jan

SEO-venligt CMS.

Se vores juni tilbud her: www.enkelt-webdesign.dk

Fra København S
Tilmeldt 1. Feb 06
Indlæg ialt: 3528
Fra  Kim Tetzlaff ApS Kim Tetzlaff Ejendom Skrevet kl. 17:45
Hvor mange stjerner giver du? :

Jan Klemmensen:
Jeg vil umiddelbart sige at mit niveau i PHP er under det her.
ok, det er nu ellers meget simpelt :)

Jan Klemmensen:
Jeg havde håbet på at man kunne benytte mod_rewrite, og lade mine scripts være, og ad den vej få pæne urls, men det ser det ikke ud til :-)
Det kan også godt lade sig gøre, men den måde jeg snakker om er og bliver langt bedre efter min mening. Og i forhold til din kode, er det nu kun din GET som skal ændres.

if(isset($_SERVER['REQUEST_URI'])){

$sql = "SELECT id, url FROM subject WHERE url = {$_SERVER['REQUEST_URI']}";

$result = mysqli_query($connection, $sql);

while($link = mysqli_fetch_array($result)){

$id = $link['id'];

$url = $link['url'];

    }

if($id == '1' && $url == "Forside"){

// Så findes siden, og hent informationer der er under det unikke id..

    }

}


Ekspert i hastighedsoptimering og Teknisk SEO

Optimering og udvikling af hurtige hjemmesider, med mere end 25 års erfaring. Danmarks bedste hastighedsoptimering med speciale i wordpress. Wordpress hjemmeside

Fra København N
Tilmeldt 16. Jun 10
Indlæg ialt: 35
Fra  enkelt-webdesign.dk Skrevet kl. 18:28
Hvor mange stjerner giver du? :

Aha jeg tror jeg begynder at se lyset!

Du skriver at URL'en ville være: Forside (f.eks)

I DB har jeg gemt f.eks:

  • Forside
  • Kontakt

Men hvis jeg echoer $_SERVER['request_uri']; får jeg: /enkeltwebdesign/index.php?Forside

Så urlen i databasen skal hedde hele adressen og ikke kun det efter index.php?

Det ser ud til at jeg har en anden "url" i DB (Forside, Kontakt, etc etc) end den der sammenlignes med ved brug af $_SERVER['request_uri'];..

Mange tak for hjælpen Kim, og tålmodighed! Jeg tror det ender med en løsning :-)

SEO-venligt CMS.

Se vores juni tilbud her: www.enkelt-webdesign.dk

Side 1 ud af 3 (29 indlæg)