FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
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 ![]() |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Mycket flitig postare
|
Citat:
Kod:
RewriteCond %{REQUEST_URI} !^/?(sida\.php\?234=vdg|sida.php)$ 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 Kod:
RewriteCond %{REQUEST_URI} !^/?[^?]*\.php Senast redigerad av qson den 2010-03-20 klockan 11:58 |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Nykomling
|
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 |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
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] 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. |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Nykomling
|
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 ![]() |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
Gör så, du kan väl meddela hur det gick!
![]() |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Nykomling
|
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. |
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Medlem
|
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. |
||
![]() |
![]() |
Svara |
|
|