Hur kan man ta bort filändelser med RewriteRule i .htaccess?

Tråden skapades och har fått 8 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Bollnäs
  • 2010-06-05 09:07

Jag använder ett bildomskalningsskript (Timthumb) och har nu tänkt mig få lite snyggare och bättre sökvägar till bilderna. Jag vill ändra så att inte sökvägen till bilderna blir timthumb.php?src=/bilden.jpg utan istället timthumb/bilden.jpg och använder då en RewriteRule i .htaccess.

Problemet är att jag inte tror att det här är det rätta sättet att skriva den. Dels kan man inte anropa skriptet på konventionellt sätt med regeln (parametrarna för sökvägen till bilden förstörs på något sätt) och dels tycker jag det verkar märkligt att jag ska behöva ha .php på båda ställena i regeln. Men nu har jag kört fast och Google ger mig inga användbara svar.

Så här ser det ut nu:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^timthumb\.php(.*)$ timthumb.php\?src=$1
</IfModule>

Kan någon peka mig i rätt riktning för hur det ska skrivas vore jag oerhört tacksam. Resultatet ska alltså vara att både timthumb.php?src=/bilden.jpg och timthumb/bilden.jpg fungerar. Regeln ska bara gälla för mappen .htaccess-filen ligger i.

  • Medlem
  • Göteborg
  • 2010-06-05 11:10
RewriteRule ^timthumb/(.*)$ /timthumb.php?src=/$1 [L]

http://exempel.com/timthumb/gris.jpg blir http://exempel.com/timthumb.php?src=/gris.jpg (tror jag) om du lägger raden i .htaccess i din www-root.

  • Medlem
  • Bollnäs
  • 2010-06-06 11:49
Ursprungligen av gaimasa:
RewriteRule ^timthumb/(.*)$ /timthumb.php?src=/$1 [L]

http://exempel.com/timthumb/gris.jpg blir http://exempel.com/timthumb.php?src=/gris.jpg (tror jag) om du lägger raden i .htaccess i din www-root.

Nope. Det var det jag trodde också, men det fungerar inte. Skriptet rapporterar att ingen sökväg har angivits till bilden. Kan det ha att göra med att jag har ett gäng andra parametrar i sökvägen? En bild kan t ex refereras som bilden.png&w=430&h=144&zc=1&q=90&cropfrom=middle där skriptet ska ta hand om parametrarna för att göra bilden till en viss storlek osv.

Ursprungligen av studiox:

om alla bilder är jpg skulle du kunna skrippa timthub och köra .jpg istället.

Bilderna är antingen jpeg eller png, men kan också i udda fall vara gif. Skriptet hanterar alla tre formaten.

  • Oregistrerad
  • 2010-06-05 11:42

om alla bilder är jpg skulle du kunna skrippa timthub och köra .jpg istället.

  • Medlem
  • Göteborg
  • 2010-06-06 12:09

föreslår isf att du anger sökvägen till bilden som nåt i stil med http://exempel.com/thumb/430/144/1/90/middle/gris.jpg och fångar upp parametrarna med hjälp av mod_rewrite innan du skickar vidare.

Gjorde precis sådär för flera år sen, visserligen inte med timthumb utan nån perlvariant, så det skall inte vara några konstigheter. Rekommenderar Mod_Rewrite Forums • Index page om du vill titta på mängder av exempel. Där kan du också ställa din fråga och få bättre hjälp... Lycka till!

  • Medlem
  • Göteborg
  • 2010-06-06 12:18

Fann hur jag gjorde då. Exempel från förr, hoppas det kan ge dig lite ledning.

/thumbs/bredd/filnamn.jpg blir bakom kulisserna /makethumb.pl?s=images/filnamn.jpg&w=bredd

RewriteCond %{HTTP_HOST} ^(www\.)?(subdomain)\.domain\.se$ [NC]
Rewriterule ^thumbs/([^/\.]+)/([^/\.]+)\.jpg$ /makethumb.pl?s=images/$2.jpg&w=$1 [L]
  • Medlem
  • Göteborg
  • 2010-06-06 18:39

Intressant det här...
Är det "helt fel" att låta ett php-skript i en anpassad 404-sida ta hand om tolkningen av sökvägen och omdirigering till rätt fil?

  • Medlem
  • Bollnäs
  • 2010-06-06 20:08
Ursprungligen av pichia:

Intressant det här...
Är det "helt fel" att låta ett php-skript i en anpassad 404-sida ta hand om tolkningen av sökvägen och omdirigering till rätt fil?

Nej, det kan man väl inte säga. Jag inbillade mig bara att det var lättast att lösa det med en rewriterule. Men uppenbart var det inte så lätt.

I och för sig känns det som att en regular expression i php är något jag bemästrar lättare än i en rewriterule, men har du något på lager får du gärna dela med dig. Alla lösningar är bra lösningar.

  • Medlem
  • Göteborg
  • 2010-06-07 18:33
Ursprungligen av Kalle W:

I och för sig känns det som att en regular expression i php är något jag bemästrar lättare än i en rewriterule, men har du något på lager får du gärna dela med dig. Alla lösningar är bra lösningar.

Nej, jag är dessvärre ingen mästare på regular expression. Men det känns som att det borde vara hyfsat enkelt att bevaka för ett nyckelord i url-en (typ "timthumb") och då splitta upp urlen i en array och bygga upp den korrekta länken mha av arraydelarna.

1
Bevaka tråden