K@llenMedlem sedan mars 20032 667 inlägg Tjabba,
Jag hade ett liknande problem när jag bytte från html- till php-filer. Nu när jag bygger en ny sajt vill jag göra rätt direkt vad adresser avser.
Ponera att jag har ett artikelsystem. Adressen till en artikel kan då bli:
http://www.domain.se?article=231&cat=12
Artikeln ligger lagrad i en databas och hämtas direkt därifrån och presenteras för besökaren. Helst skulle man kanske vilja ha en edres som ser ut så här:
http://www.domain.se/article/12/231
eller nått. Hur få till bra och enkla adresser som inte binder mig till en filtyp. Jag har kikat lite på min tidigare lösning:
http://www.webforum.nu/showthread.php?s=&postid=1001052#post1001052
Hur bör jag utforma adressen på bästa sätt?
GislavedMedlem sedan nov. 20041 740 inlägg Har du stöd för mod_rewrite? Då kan du ju använda dig av det för att alltid peka till rätt filer, oavsett vilket programspråk du föredrar.
Använd det för att plocka variabler ur adressen. Detta innebär även att du kan lägga till variabler i adressen som egentligen inte påverkar själva innehållet, men som ger bättre placering i sökmotorerna.
example.org/12/231/sidans-titel
K@llenMedlem sedan mars 20032 667 inlägg Jo, den biten med mod_rewrite är jag med på. Men det blir ju en helsikes massa kataloger, eller är jag fel på det? Simulerar jag bara en fysisk adress?
GislavedMedlem sedan nov. 20041 740 inlägg Du behöver inga riktiga kataloger. Du säger helt enkelt bara till webbservern (med mod_rewrite) att alla sökvägar som börjar med /article/ ska skickas vidare till /visasida.php?kategori=12&sida=345
Jag använder ett sådant system för https://www.gastbok.nu Jag har nästan 30 000 gästböcker, men allt körs från ett enda script i en katalog. Det hade blivit svårt att hålla reda på alla kataloger annars.
K@llenMedlem sedan mars 20032 667 inlägg Kan hända jag är en smula trög nu. Men skickar jag vidare till /visasida.php?kategori=12&sida=345 då visas väl den adressen i adressraden? Eller tänker jag tokigt? Missar jag något viktigt i sammanhanget?
GislavedMedlem sedan nov. 20041 740 inlägg Nej, det var lite slarvigt uttryckt av mig. Vidarebefordringen sker internt, och syns aldrig för besökaren.
Din .htaccess skulle kunna se ut såhär:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^artikel/(.*)$ /artikel.php?querystring=$1 [L]
Säg att anropet ser ut så här:
example.org/artikel/12/345
Då laddar vi filen
example.org/artikel.php?querystring=12/345
För besökaren syns fortfarande den översta adressen i fönstret.
Splitta sedan strängen med PHP.
$querystring = $_GET["querystring"];
$delar = explode("/", $querystring);
$kategori = $delar[0];
$artikel = $delar[1];
jarvkloMedlem sedan juli 20013 378 inlägg Yep - mod-rewrite är praktiskt, och om man vill kan man meka vidare med reglerna för att täcka in flera parametrar utan att koda in något i applikationen - även om reglerna kan bli lite grötiga om man har speciella önskemål :)
Surfa till t.ex. http://xhtml.se/2005/04/ och du utlöser regeln
RewriteRule ^([0-9]{4})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2 [QSA,L]
- dvs parametrarna splittas i regeln så att fyra siffor följt av en "/" och sedan en eller två siffror till, och den första siffergruppen (mellan det första parentesparet i uttrycket) kopplas via $1, det andra via $2 ...
:birp
GislavedMedlem sedan nov. 20041 740 inlägg
jarvklo skrev:
PS - example.org/artikel/12/345 bör det väl vara i föregående exempel ?
Det känns bra att jag hann se felet själv innan du påpekade det.
jarvkloMedlem sedan juli 20013 378 inlägg Hihi... Du var så snabb att du t.o.m. hann kommentera komentaren under de ca 20 sekunder den låg ute innan jag såg att du ändrat och redigerade bort den :bire
K@llenMedlem sedan mars 20032 667 inlägg Gaaah, nu börjar det bli meckigt. Ännu en anledning att lära sig Reguljära uttryck. Något som jag hela tiden föser framåt i tiden. :(
Tack grabbar, jag ska pula med det jag fått hittills. Får säker anledning att återkomma i tråden när problem (garanterat) uppstår. :D
Gislaved skrev:
Säg att anropet ser ut så här:
example.org/artikel/12/345
Är poängen med detta sätt att göra sökvägen oberoende av vilket programspråk man använder sig av? Eller finns det flera fördelar gentemot det traditionella sättet http://www.domain.se/?article=231&cat=12?
GislavedMedlem sedan nov. 20041 740 inlägg Poängerna kan vara flera. Dels kan det, som du nämner, vara fördelaktigt att behålla adresser även om du byter programspråk. Dels kan det innebära att sökmotorerna får det lättare att hitta på din sida. Script kiddies kanske undviker att leta hål på din sida om det är krångligt att se vilket programspråk du använder.
Sen tycker jag dessutom att det är snyggare.
GuffaMedlem sedan juni 2004533 inlägg Här är lite bra läsning om hur man väljer sina adresser:
http://www.w3.org/Provider/Style/URI
CompusaMedlem sedan jan. 20023 327 inlägg Finns det någon bra sida där man kan läsa mer om mod_rewrite? Gärna tutorial :)
Compusa skrev:
Finns det någon bra sida där man kan läsa mer om mod_rewrite? Gärna tutorial :)
Behöver också en guide, steg för steg. Fattar inte varför jag aldrig förstår hur jag gör detta.
Gör man allt i .htaccess filen????
då är det 59 minuter kvar för att hjälpa mig lite innan den omtalade uppgraderingen...
GislavedMedlem sedan nov. 20041 740 inlägg
SONICdust skrev:
Compusa skrev:
Finns det någon bra sida där man kan läsa mer om mod_rewrite? Gärna tutorial :)
Behöver också en guide, steg för steg. Fattar inte varför jag aldrig förstår hur jag gör detta.
Gör man allt i .htaccess filen????
Det mesta görs i .htaccess-filen. Ofta gör du en enkel vidarebefordran till rätt script, och behandlar sedan informationen på rätt sätt.
liljaMedlem sedan juli 20041 183 inlägg Rätta mig om jag har fel med detta gäller väl bara på Apaches webbserver?
Eller kan man göra sånt här på IIS också??
Gislaved skrev:
Det mesta görs i .htaccess-filen. Ofta gör du en enkel vidarebefordran till rätt script, och behandlar sedan informationen på rätt sätt.
Är extra tög då det är söndag kväll... kan du inte visa lite kod exempel på det du menar så kanske jag hänger med...
mrhazeMedlem sedan juli 2002252 inlägg
lilja skrev:
Rätta mig om jag har fel med detta gäller väl bara på Apaches webbserver?
Eller kan man göra sånt här på IIS också??
Du kan göra det i IIS genom att mappa olika filtillägg till olika program. Om du t ex. mappar filtillägget ".htm" till c:\windows\microsoft.net\framework\v2.0.50215\aspnet_isapi.dll (ASP.NET) så kan du programmera .NET i vanliga .htm sidor. Samma gäller med t ex .gif bilder så att .NET kan hantera dessa och t ex streama ut https://www.mindoman.se/bild.gif från en SQL databas.. :)
Finns många möjligheter, bygger ett CMS system i .NET som använder sig av virtuella .htm sidor som genereras från databas. På så sätt kan jag få https://www.mindoman.se/minkatalog/minfil.htm att vara helt dynamisk men ändå se statisk ut så att besökare enkelt kommer ihåg adressen samt (nog viktigast!) att sökmotorer kan indexera mina sidor på ett optimalt sätt.