Kom ihåg mig?
Home Menu

Menu


Modrewrite regler!

Ämnesverktyg Visningsalternativ
Oläst 2010-03-20, 11:50 #1
Mystica Mystica är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2009
Inlägg: 35
Mystica Mystica är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2009
Inlägg: 35
Tool Modrewrite regler!

Hej!

Jag blir inte klok på dessa modrewrite och revritecond m.m. jag undrar nu om ni kan hjälpa mig med regler.

Det jag vill är att när någon skriver eller länkar till en .php sida ex /sida.php?234=vdg eller /sida.php så skall modrewrite INTE skriva om någonting. men allting annat skall den skriva om (förutom själva / då) och peka till sida2.php för att läsa in urlen och se om jag kan få fram en vettig sida på det som är skrivet.

med andra ord skriv om allting som inte är en .php sida i urlen.

Tack på förhand
Mystica är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-03-20, 11:55 #2
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
Citat:
Ursprungligen postat av Mystica Visa inlägg
Hej!

Jag blir inte klok på dessa modrewrite och revritecond m.m. jag undrar nu om ni kan hjälpa mig med regler.

Det jag vill är att när någon skriver eller länkar till en .php sida ex /sida.php?234=vdg eller /sida.php så skall modrewrite INTE skriva om någonting. men allting annat skall den skriva om (förutom själva / då) och peka till sida2.php för att läsa in urlen och se om jag kan få fram en vettig sida på det som är skrivet.

med andra ord skriv om allting som inte är en .php sida i urlen.

Tack på förhand
Om din Rewrite funkar i övrigt, men du vill plocka bort så just dessa inte skrivs om, lägg till följande RewriteCond:
Kod:
RewriteCond %{REQUEST_URI} !^/?(sida\.php\?234=vdg|sida.php)$
Ovanstående kommer matcha endast två uri-er: sida.php?234=vdg eller bara sida.php. Inga andra uri.er.
om du istället vill plocka bort alla uri-er som börjar med sida.php (vilket du inte skrev i frågan) kan du använda denna istället:
Kod:
RewriteCond %{REQUEST_URI} !^/?sida\.php
-

Upptäckte nu din sista rad, att du vill att den inte skall skriva om för alla php-filer:
Finns två sätt:
En att den inte matchar om det finns en fil med det namnet (vanligast):
Kod:
RewriteCond %{REQUEST_FILENAME} !-f
Annars kan du kolla om .php finns i filnamnet:
Kod:
RewriteCond %{REQUEST_URI} !^/?[^?]*\.php

Senast redigerad av qson den 2010-03-20 klockan 11:58
qson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-03-20, 13:52 #3
Mystica Mystica är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2009
Inlägg: 35
Mystica Mystica är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2009
Inlägg: 35
Tack för ditt svar.

Det som verkar mest lovande är
RewriteCond %{REQUEST_FILENAME} !-f

Men om jag nu tar och skriver in en sådan tillsammans med en rewriterule som ex.
RewriteRule ^(.*) /analys.php [nc]

Nu blir det totalt knasigt om man skriver ex http://domän.com/
då blir det internal server error.

däremot om jag skriver http://domän.com/index.php så fungerar det fint.

min första tanke var att inan de där reglerna ovan lägga till en
RewriteRule ^ /index.php [nc]

Men det stökade till det hela ännu mer..

Så det som inte fungerar för mig är följande:
RewriteEngine On
RewriteRule ^ /index.php [nc]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) /analys.php [nc]
RewriteBase /

som sagt e stor nybörjare på detta och har säkerligen inte fått en rad rätt.

Fortfarande tacksam för hjälp
Mystica är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-03-20, 15:14 #4
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
Jag kör själv med dessa regler på större delen av mina projekt:
Kod:
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+) - [PT,L]

RewriteRule .*(\?.*) index.php$1 [QSA]
RewriteRule .* index.php [QSA]
Denna regel innebär att alla sökvägar som INTE är en fil ELLER en mapp hänvisas till index.php i samma katalog där .htaccess-filen ligger.

T.ex.
Ovanstående regler placeras i www.test.se/.htaccess.

www.test.se/bilder/minbild.jpg
Denna URL beter sig precis som vanligt (såvida filen minbild.jpg existerar).

www.test.se/artiklar/sokmotoroptimering.html
Eftersom varken mappen "artiklar" eller "sokmotoroptimering.html" existerar på servern så dirigeras denna fråga till www.test.se/index.php där jag sedan via PHP kontrollerar vad URL:en innehåller för mappar/filnamn/queries etc.

Jag vet inte om det svarade på din fråga riktigt, men du kanske får ut något av det i alla fall.
objx är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-03-20, 15:29 #5
Mystica Mystica är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2009
Inlägg: 35
Mystica Mystica är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2009
Inlägg: 35
Detta verkar vara precis vad jag e ute efter. Skall testa lite och labba o se om det beter sig som jag vill

Tack för svaret
Mystica är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-03-20, 16:21 #6
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
Gör så, du kan väl meddela hur det gick!
objx är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-03-20, 19:50 #7
Mystica Mystica är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2009
Inlägg: 35
Mystica Mystica är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2009
Inlägg: 35
Thumbs up Topen!

Det fungerar ganska bra faktiskt

jag ändrade om i scriptet så det inte gick till index sidan då min struktur inte tycker om att jag kör det via index.php (går men omständigt) och det medför automatiskt att ex domän.com/ bara går direkt till fil som analyserar url'en. Detta är dock enkelt löst i den filen men annars fungerar det klockrent för mig

Tackar och bockar. Hade du sålt sådanna lösningar i förpackningar på apoteket så hade jag köpt många lådor för att förhindra huvudvärk.
Mystica är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-03-21, 00:25 #8
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
haha!

Kul att det hjälpte dig!

Jag skrev en rätt behändig klass i PHP för att analysera en URL som är ett riktigt bra komplement till den där typen av htaccess-regler.
Den har t.ex. funktioner för att kontrollera domännamn, mappar, filnamn, queries etc.
Säg att du har följande adress:

www.test.se/produkter/mobiltelefoner.html

Klassen kan jag därefter använda på följande sätt:

$url = "www.test.se/produkter/mobiltelefoner.html";
(i normala fall så är ju $url en dynamisk variabel som alltid representerar aktuell URL)

$analyzed_url = new _url($url);

Därefter kan jag hämta information om URL:en på följande vis:

$mapp1 = $analyzed_url->getDir(1);
1:an representerar vilken mapp i turordningen som jag är ute efter, ex:
www.test.se/mapp1/mapp2/mapp3/ osv.

$mapp1 kommer nu alltså innehålla "produkter".

$filename = $analyzed_url->getFilename();
getFilename ger mig namnet på filnamnet ("mobiltelefoner.html" i detta fall)

$filenamebody = $analyzed_url->getFilenameBody();
Denna funktion ger mig filnamnet utan filändelsen ("mobiltelefoner" i sammanhanget).

Klassen har även en del andra funktioner som är rätt användbara.

Skicka ett PM om du är intresserad av att kolla på den så skickar jag över den.
objx är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 06:47.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017