Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

farklı bir .htaccess yönlendirmesi ?

merhaba arkadaşlar,
bana şöyle bir htaccess yönlendirmesi lazım oldu.
şunu istiyorum
belirli bir klasöre dosya uzantısı olmadan çağrı yapıldığında bir php dosyasına yönelecek dosya uzantılı ise işlem yapılmadan dosyaya erişilecek
şöyleki
RewriteRule ^uploads/(.*)$ thumb.php?p=$1  // bu yönlendirmede sıkıntım yok ancak dosya uzantısı var ise dosyaya yönlensin
upload/deneme diye bir istek olduğunda php'ye yönelenecek 
upload/deneme.jpg diye bir dosya olduğunda direk dosyaya gidecek


çok anlamadığım için çözemedim
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • 1
    sinanilyas adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    7 cevap - 1 soru
    RewriteCond %{REQUEST_URI} ^/uploads/[^.]+$ [NC]
    RewriteRule ^uploads/(.*)$ thumb.php?p=$1

    İlk satır, ikinci satırdaki kuralın hangi şart sağlanıyorsa işletileceğini belirtir.
    İlk satırda ki şart şu: /uploads/ yazdıktan sonra nokta kullanılmadan başka şeyler de yazılmışsa
    Dolayısıyla, dosya uzantısı yazılmamışsa aşağıdaki kural işletilir ve yönlendirme yapılır.

Cevaplar

  • freefox adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    37 cevap - 21 soru
    ilgin için teşekkürler.
    öncelikler ben sorunumu farklı bir yolla çözdüm ama buşekilde bir çözüm daha iyi
    yalnız benim isteklerde noktada olacak.
    şöyleki

    uploads/deneme.jpg-650

    genelde isteklerim bu şekilde buradaki 650 istenilen resmin width değeri bu istek php ye yönlenip 650 width ebatında yeni bir resim oluşturacak.
    uploads/deneme.jpg
    şeklinde olduğunda ise bir yönlendirme yapılmadan dosyaya gidilecek.
    senin kodu şu şekilde düzenlesek
    RewriteCond %{REQUEST_URI} ^/uploads/[^-]+$ [NC] 
    RewriteRule ^uploads/(.*)$ thumb.php?p=$1 
    

    yani istekte düz çizgi yoksa desek bi sorun yaratmaz heralde değilmi.?
    • sinanilyas adlı üyenin fotoğrafı sinanilyas
      Bu durumda şöyle yazmanız daha mantıklı gibi:

      RewriteCond %{REQUEST_URI} ^/uploads/.+\..+-\d+$ [NC]
      RewriteRule ^uploads/(.+)-(\d+)$ thumb.php?p=$1&w=$2
      


      İlk satırda diyor ki, /uploads/ 'den sonraki kısmın içinde - geçiyorsa (- işaretinden sonraki kısım rakamlardan oluşmalı) aşağıdaki kuralı işlet.

      İkinci satırda da diyor ki, /uploads/ ile - arasındaki kısım $1 olsun, - işaretinden sonraki kısım da $2 olsun, bu durumda thumb.php?p=$1&w=$2 sayfasını göster. Yani burada dosya adı ve genişlik otomatik olarak ayrılıp thumbs.php'ye öyle gönderiliyor. PHP dosyasında ayrıca parse etmeye gerek kalmıyor.
      11 yıl önce yazılmış
    • freefox adlı üyenin fotoğrafı freefox
      Bu yaptım ama şöyle bir hata alıyorum
      The requested URL /asya/uploads/st_6337_34705_1725.jpg-650 was not found on this server.
      

      isteğin sonundaki -650 yi kaldırınca direk resme yönleniyor burada sıkıntı yok.
      ama -650 eklediğimde hata alıyorum . neden olabilir acaba
      11 yıl önce yazılmış
    • sinanilyas adlı üyenin fotoğrafı sinanilyas
      Soruda verdiğiniz URL ile burada kullandığınız URL farklı ama. /uploads'dan önce başka şeyler de varsa url'de onu da belirtmek lazım. sizin durumda şöyle demeniz lazım:

      RewriteCond %{REQUEST_URI} ^/asya/uploads/.+\..+-\d+$ [NC]
      RewriteRule ^/asya/uploads/(.+)-(\d+)$ thumb.php?p=$1&w=$2
      


      Ya da /uploads'tan önce ne geleceği sabit değilse;

      RewriteCond %{REQUEST_URI} ^.*/uploads/.+\..+-\d+$ [NC]
      RewriteRule ^.*/uploads/(.+)-(\d+)$ thumb.php?p=$1&w=$2
      
      11 yıl önce yazılmış
    • freefox adlı üyenin fotoğrafı freefox
      hala aynı hatayı alıyorum
      eminim burada küçük bir nüans var ama o nedir bilemiyorum.
      kullandığım .htaccess şu halde
      <ifmodule mod_expires.c>
        <filesmatch "\.(jpg|gif|png|css|js|php)$">
             ExpiresActive on
             ExpiresDefault "A2419200"
      	   Header set Cache-Control "max-age=604800"
         </filesmatch>
      </ifmodule>
      RewriteEngine On 
      RewriteCond %{REQUEST_URI} ^.*/uploads/.+\..+-\d+$ [NC]
      RewriteRule ^.*/uploads/(.+)-(\d+)$ thumb.php?p=$1&w=$2
      RewriteRule ^include/(.*).js$ jss.php?s=$1
      


      tüm satırları kaldırıpsadece senin gönderdiğinide denedim aynı hatayı alıyorum.
      uploads/ dan önceki kısım sabit olmayacak.
      11 yıl önce yazılmış
    • sinanilyas adlı üyenin fotoğrafı sinanilyas
      Ufak bir değişiklik yaptım, bende şu şekilde çalışıyor:

      RewriteCond %{REQUEST_URI} uploads/.+\..+-\d+$ [NC]
      RewriteRule uploads/(.+)-(\d+)$ /thumb.php?p=$1&w=$2
      


      http://localhost/uploads/deneme.jpg-450
      dediğimde bunu şu şekle çeviriyor:
      http://localhost/thumb.php?p=deneme.jpg&w=450

      Yönlendirme yapılıp yapılmadığını anlamak için ikinci satırın sonuna bir boşluk koyup, sonra [R=301] yazabilirsin.

      Burada /thumb.php yazdığım için thumb.php'yi ana klasörde arıyor. thumb.php neredeyse yolu ona göre verebilirsin.
      11 yıl önce yazılmış
    • freefox adlı üyenin fotoğrafı freefox
      ana klasöre gitmeyi kaldırdım . çünküm kök dizinde çalışmasını istemiyordum.
      sorunum çözüldü eywallah teşekkür ederim
      11 yıl önce yazılmış
    • sinanilyas adlı üyenin fotoğrafı sinanilyas
      Rica ederim, iyi çalışmalar.
      11 yıl önce yazılmış