Sida 1 av 2

htaccess till ?page=

Postat: 2008-07-15 22:17
av sanda
Tjenare! Satt och klurade hur jag ska fixa till mina länkar så de blir mer sökvänliga. Länkarna ser nu ut så här mindomän.se/?page=start skulle vilja att de blev mindomän.se/start

Hur skriver jag detta i htaccessen? Har inte arbetat så mkt med detta innan så är tacksam för svar.

Re: htaccess till ?page=

Postat: 2008-07-15 22:42
av Kjell

Re: htaccess till ?page=

Postat: 2008-07-15 23:44
av sanda
Läste och försökte, dock utan att lyckas riktigt.. Hmm ni har möjligtvis inte erfarenhet av detta?

Re: htaccess till ?page=

Postat: 2008-07-16 07:03
av Kjell
Har du inget php program före "?" så som index.php?page=start ?
Är själv lite osäker hur "Rewrite" fungerar, men det borde vara något åt det här hållet.
Jag la till en sida "om oss".

Kod: Markera allt

RewriteEngine on
Rewriterule ^(.+)./index.php?page=start-(.+)$			./start.html
Rewriterule ^(.+)./index.php?page=omoss-(.+)$			./omoss.html
eller då är det så här

Kod: Markera allt

RewriteEngine on
Rewriterule ^(.+)./start.html-(.+)$			./index.php?page=start
Rewriterule ^(.+)./omoss.html-(.+)$			./index.php?page=omoss
Kan säker bli rättad av någon som kan det här på sina fem fingrar :)

Re: htaccess till ?page=

Postat: 2008-07-16 09:21
av Holger
sanda skrev:Tjenare! Satt och klurade hur jag ska fixa till mina länkar så de blir mer sökvänliga. Länkarna ser nu ut så här mindomän.se/?page=start skulle vilja att de blev mindomän.se/start

Hur skriver jag detta i htaccessen? Har inte arbetat så mkt med detta innan så är tacksam för svar.
Problemet med aom du länkar om mindomän.se/start är att du inte kan använda undermappar längre!

Re: htaccess till ?page=

Postat: 2008-07-16 09:54
av Kail
Jo, han kan använda underkataloger då Apache först kollar om filen eller katalogen finns (!-f, !-d). Jag råder dock Sanda att byta till Drupal direkt då Drupal gör detta (kallas Clean URLs), lika bra att lära sig ett vettigt CMS på en gång. Vill du trots allt göra det ska din rewrite rule se ut så här (taget från .htaccess som medföljer Drupal, med modifikationer):

Kod: Markera allt

<IfModule mod_rewrite.c>
  RewriteEngine on
  # Rewrite current-style URLs of the form 'index.php?page=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
</IfModule>

Re: htaccess till ?page=

Postat: 2008-07-16 12:08
av sanda
Tckar massor, Kails förslag fungerade kanon. Jag inkluderar de flesta sidor från min index så även om det inte hade fungerat med andra mappar så hade det ju löst det..

Som sagt, tack igen.

Drupal har jag tittat en hel del på men det bästa CMS för mina behov är nog ändå Wordpress. Oerhört plexibellt och går att tänja nästan hur mkt man vill :)

Re: htaccess till ?page=

Postat: 2008-07-16 12:53
av Kail
WP duger för enklare sajter som i botten är bloggar men någon schweizisk armékniv är det inte riktigt i min mening. Drupal har en rejäl tröskel men det är det värt, möjligheterna är nästintill obegränsade.

Re: htaccess till ?page=

Postat: 2009-05-21 08:11
av sanda
Livar upp en gammal tråd här :)

Har använd mig av just en sån här rewrite regel ett tag nu men skulle vilja förfina mina sidor jag hämtar från min mysql db. Sidornas URL blir förnärvarande:

pages?id=1
pages?id=2
o.s.v

Hur kan jag fixa till dom så dom använder sig av en titel istället. Jag har börjat med att lägga till en ny rad i tabellen vid namn "path" (man kanske vi ha en annan adress än titeln) och i min:

pages?id=1

är titel:
Startsidan
och path:
home

pages?id=2

är titel:
Om Oss
är path:
about_us

Sammanfatttning:
Hur kan jag med hjälp av min htaccess fil använda mig av min egen valda "path" istället för pages?id=1,2,3 osv.

Hoppas ni hängde med här :)

Re: htaccess till ?page=

Postat: 2009-05-21 15:21
av Kail
En rewrite-regel samt att du ser till att du använder titel som nyckel i dina SQL-frågor i databasen.

pages?titel=Startsidan

Kod: Markera allt

<?php
// clean() är en hypotetisk funktion som rensar indata och hindrar SQL injections
// se: http://en.wikibooks.org/wiki/PHP_Programming/SQL_Injection
// klass du kan använda: http://www.phpclasses.org/browse/package/2189.html

$titel = clean($_GET['titel']);
$sql = sprintf("SELECT * FROM page WHERE titel = '%s';", $titel);
$res = mysql_query($sql)... // etc
?>
.htaccess eller vhost-confen

Kod: Markera allt

<IfModule mod_rewrite.c>
  RewriteEngine on
  # Rewrite current-style URLs of the form 'pages?titel=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ pages?titel=$1 [L,QSA]
</IfModule>
Återigen säger jag Drupal. :)

Re: htaccess till ?page=

Postat: 2009-05-21 15:28
av Kail
Apropå SQL-injektioner :)

Re: htaccess till ?page=

Postat: 2009-05-21 15:44
av sanda
Hur gör jag för att använda 2 rewrites i samma htaccess fil då? för jag vill ha kvar den andra jag har till "statiska" sidor jag har.

Har funderat en del på drupal men finns inte tid för det just nu (hört att det är en hööööög tröskel innan det öppnar sig).

Re: htaccess till ?page=

Postat: 2009-05-21 15:55
av sanda
Jag antar att jag borde börja med att göra path till PRIMARY KEY i min db?

Re: htaccess till ?page=

Postat: 2009-05-21 18:14
av sanda
hmm jag kan inte ens få till en ren URL med mitt id ni...

Blir tokig! Får det inte att funka.

Kod: Markera allt

<IfModule mod_rewrite.c>
  RewriteEngine on
  # Rewrite current-style URLs of the form 'index.php?page=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
  RewriteRule /pages/(.*)$ pages?id=$1 [L,QSA]
</IfModule>
Första "rewriten"
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

Får mina ?page=filen att bli /filen (för statiska filerfunkar kanon!)

denna "rewriten"
RewriteRule /pages/(.*)$ pages?id=$1 [L,QSA]

Är tänkt att förfina sidor från databasen:
från:
/pages?id=2
till
/pages/2 <- id numret till en början

Men får inte andra rewriten att fungera, krockar dom kanske med varann eller nått liknande?

Re: htaccess till ?page=

Postat: 2009-05-21 19:26
av Kjell
Har inte satt mig in så mycket i problemet, men den här borde fungera.

Kod: Markera allt

RewriteRule ^(.+)\.(html|htm)$ index.php?page=$1 [QSA,L]
Den gör om alla val till html, exempelvis index.php?page=huvudsida blir huvudsida.html