UrMe Medlem sedan apr. 2001 762 inlägg Frågan 4 sep. 2008 12:15 #1 Har skrivit en .htaccess regel som funkar så här:
RewriteRule ^nick/([^/]+)/ /public_html/index.php?nick=$1
T.ex om man skriver http://www.minadress.com/nick/tjoho/
Så tolkas det som http://www.minadress.com/index.php?nick=tjoho
Problemet är att jag vill skriva om det så att:
http://www.minadress.com/tjoho/ funkar, så jag slipper /nick/ i adressen.
Men eftersom jag har sidor som ligger under http://www.minadress.com/ t.ex http://www.minadress.com/admin/
http://www.minadress.com/andrasubfoldrar/
etc
Så krockar ju detta.
Hur kan jag exkludera vissa underkataloger i .htaccess filen?
Helst även att man slipper skriva / på slutet också, så det räcker med http://www.minadress.com/tjoho
UrMe Medlem sedan apr. 2001 762 inlägg Hittade detta:
RewriteCond %{REQUEST_URI} !admin
RewriteCond %{REQUEST_URI} !entillkatalog
RewriteCond %{REQUEST_URI} !index.php
Om jag gör om regeln till
RewriteRule ^(.*)/$ /public_html/index.php?nick=$1
Så fungerar det, men om jag tar bort / (slashen) så får jag Internal Server Error.. hur ska jag fixa detta?
UrMe Medlem sedan apr. 2001 762 inlägg Så här ser hela ut nu:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !admin
RewriteCond %{REQUEST_URI} !css
RewriteCond %{REQUEST_URI} !images
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /public_html/index.php?nick=$1
RewriteRule ^(.*)/$ /public_html/index.php?nick=$1
Nu kan jag skriva http://www.minadress.com/tjoho och det funkar, men om jag skriver http://www.minadress.com/admin så pekar den ändå på http://www.minadress.com/index.php?nick=admin , vilket blir fel då :(
Om du varken vill matcha på "admin" eller "andrassubfoldrar" bör detta fungera:
# Hoppa även över funna kataloger
RewriteCond %{REQUEST_FILENAME} !-d
UrMe Medlem sedan apr. 2001 762 inlägg Fick till det med lite hjälp från ett annat forum.
Slutresultatet blev detta:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /index.php?nick=$1
Då fungerar det med både slash och utan slash, och krockar inte med kataloger/filer som existerar.
C colione Medlem sedan juni 2001 4 421 inlägg om någon skulle få för sig att heta admin eller css då? :)
Troxy Medlem sedan mars 2004 1 505 inlägg Döp alla "riktiga" mappar med prefix, t.ex. underscore: _admin eller _css.
Då skiljer du dessa enkelt från nicknames. T.ex:
http://www.minadress.com/\_admin/
http://www.minadress.com/admin/
Sen bygger du ett pattern som ignorerar allt som börjar med underscore.
:)