Htaccess ile klasörleri ve .html uzantısı nasıl gizlenir?

ahmet.t

Femtopat
Katılım
26 Ocak 2025
Mesajlar
7
İyi akşamlar. .htaccess kullanarak web sitemdeki klasörleri ve .html uzantısını gizlemeye çalışıyorum ama bir türlü yapamadım. Örnek olarak şöyle:
site.com/klasor1/klasor2/klasor3/ornek-sayfa.html -> site.com/ornek-sayfa haline getirmeyi çalışıyorum ama yapamadım. ChatGPT ile bayağı uğraştım fakat onunla da olmadı. Yardımcı olabilir misiniz?
 
İyi akşamlar. .htaccess kullanarak web sitemdeki klasörleri ve .html uzantısını gizlemeye çalışıyorum ama bir türlü yapamadım. Örnek olarak şöyle:
site.com/klasor1/klasor2/klasor3/ornek-sayfa.html -> site.com/ornek-sayfa haline getirmeyi çalışıyorum ama yapamadım. ChatGPT ile bayağı uğraştım fakat onunla da olmadı. Yardımcı olabilir misiniz?

En basit şekilde Ecosia'da bile arasanız sonuç bulurdunuz.

Kod:
RewriteEngine On

//1. Kısımda URL adı, 2. kısımda dosyanın yolunu yazabilirsiniz.
RewriteRule ^ornek-anasayfa$ /klasor1/klasor2/klasor3/ornek-anasayfa.html [L]

Amacınız hem uzantıyı gizlemeyi hem de bir yoldaki dosyayı URL'de o yollara girmeden direk göstermek yani doğru mu anlamışım.
 
Son düzenleme:
En basit şekilde Ecosia'da bile arasanız sonuç bulurdunuz.

Kod:
RewriteEngine On

//1. Kısımda URL adı, 2. kısımda dosyanın yolunu yazabilirsiniz.
RewriteRule ^ornek-anasayfa$ /klasor1/klasor2/klasor3/ornek-anasayfa.html [L]

Amacınız hem uzantıyı gizlemeyi hem de bir yoldaki dosyayı URL'de o yollara girmeden direk göstermek yani doğru mu anlamışım.

Kod:
RewriteEngine On

//1. Kısımda URL adı, 2. kısımda dosyanın yolunu yazabilirsiniz.
RewriteRule ^ornek-anasayfa$ /klasor1/klasor2/klasor3/ornek-anasayfa.html [L]

Bu yazdığınız kural sadece /ornek-anasayfa için yazılmış. Ben genel bir kural arıyordum mümkün müdür? Sadece /ornek-anasayfa değil (örnek: /icerik.html, /yeni.html, /ornek.html) tüm sayfaları kapsayacak şekilde istiyorum. (Mümkünse.)
Kod:
/klasor1/klasor2/klasor3/ornek-anasayfa.html [L]
ayrıca burada teker teker /klasor1/klasor2/klasor3/ yollarını belirtmek yerine direkt /klasor1/ yapısının tüm alt klasörleri kapsayacak şekilde yapabilir miyiz?
 
Son düzenleme:
Kod:
RewriteEngine On.

//1. Kısımda URL adı, 2. kısımda dosyanın yolunu yazabilirsiniz.
RewriteRule ^ornek-anasayfa$ /klasor1/klasor2/klasor3/ornek-anasayfa.html [L]

Bu yazdığınız kural sadece /ornek-ana sayfa için yazılmış. Ben genel bir kural arıyordum mümkün müdür? Sadece /ornek-ana sayfa değil (örnek: /icerik.html, /yeni.html, /ornek.html) tüm sayfaları kapsayacak şekilde istiyorum. (mümkünse.)
Kod:
/klasor1/klasor2/klasor3/ornek-anasayfa.html [L]
ayrıca burada teker teker /klasor1/klasor2/klasor3/ yollarını belirtmek yerine direkt /klasor1/ yapısının tüm alt klasörleri kapsayacak şekilde yapabilir miyiz?

Tabii ki mümkündür, buyurun;

Kod:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ /klasor1/$1.html [L]

klasor1 altındaki tüm .html dosyaları artık uzantısız görünecek URL kısmında. Ekstra olarak yönlendirme yaptık, site.com/klasor1/ornek-anasayfa yerine site.com/ornek-anasayfa yazarak gidebilir.
 
Tabii ki mümkündür, buyurun;

Kod:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ /klasor1/$1.html [L]

klasor1 altındaki tüm .html dosyaları artık uzantısız görünecek URL kısmında. Ekstra olarak yönlendirme yaptık, site.com/klasor1/ornek-anasayfa yerine site.com/ornek-anasayfa yazarak gidebilir.
Dediğiniz gibi olmadı. site.com/klasor1/ornek-anasayfa.html -> site.com/ornek-anasayfa olarak yazınca 404 hatasına neden oluyor. Dosyaya yine aynı şekilde sadece site.com/klasor1/ornek-anasayfa.html yazarak ulaşılıyor.
 
Dediğiniz gibi olmadı. site.com/klasor1/ornek-anasayfa.html -> site.com/ornek-anasayfa olarak yazınca 404 hatasına neden oluyor. Dosyaya yine aynı şekilde sadece site.com/klasor1/ornek-anasayfa.html yazarak ulaşılıyor.

Normalde hiçbir sorun olmaması gerekli, rewrite modülünüz aktif mi httpd. Conf dosyanızda? Ek olarak şunu da satır başına ekleyip deneyebilirsiniz.
(Apache'yi de yeniden başlatmayı deneyebilirsiniz denemediyseniz biraz sonra test edeceğim bende.)

Kod:
RewriteBase /klasor1/
 
Normalde hiçbir sorun olmaması gerekli, rewrite modülünüz aktif mi httpd. Conf dosyanızda? Ek olarak şunu da satır başına ekleyip deneyebilirsiniz.
(Apache'yi de yeniden başlatmayı deneyebilirsiniz denemediyseniz biraz sonra test edeceğim bende.)

Kod:
RewriteBase /klasor1/
Rewrite modülünün aktif olup olmadığını bilmiyorum fakat otomatik açık olarak gelmiyor mu? ChatGPT'ye sizin attığınız kod sonucunda 404 hatası aldığımı belirttim ve bana yeni kod yazdı:

Kod:
RewriteEngine On
RewriteRule ^([^/]+)$ /klasor1/$1.html [L]

bu kod ile /klasor1/ornek-anasayfa.html -> /ornek-anasayfa olarak erişilebiliyor. Fakat ChatGPT'ye diğer klasörlerdeki içeriklerimi nasıl sadeleştirebileceğimi (örnek olarak /klasor/alt-klasor/alt-klasor2/ornek-sayfa.html URL yapısına benzer yapılar için nasıl site.com/ornek-sayfa yaparım diye sorunca ve kod isteğince bu sefer onun kodları 404 hatasına neden oldu.)

Belki benim istediğim bu tarz bir yöntem mümkün değildir olabilir mi? Benim istediğim şey kısaca URL yapısında ne kadar klasör varsa gizlensin ve .html uzantısı gizlensin direkt dosyanın kendisi site.com/dosya olarak gözükmesiydi.
 
Rewrite modülünün aktif olup olmadığını bilmiyorum fakat otomatik açık olarak gelmiyor mu? ChatGPT'ye sizin attığınız kod sonucunda 404 hatası aldığımı belirttim ve bana yeni kod yazdı:

Kod:
RewriteEngine On.
RewriteRule ^([^/]+)$ /klasor1/$1.html [L]

Bu kod ile /klasor1/ornek-anasayfa.html -> /ornek-ana sayfa olarak erişilebiliyor. Fakat ChatGPT'ye diğer klasörlerdeki içeriklerimi nasıl sadeleştirebileceğimi (örnek olarak /klasor/alt-klasor/alt-klasor2/ornek-sayfa.html URL yapısına benzer yapılar için nasıl site.com/ornek-sayfa yaparım diye sorunca ve kod isteğince bu sefer onun kodları 404 hatasına neden oldu.)

Belki benim istediğim bu tarz bir yöntem mümkün değildir olabilir mi? Benim istediğim şey kısaca URL yapısında ne kadar klasör varsa gizlensin ve .html uzantısı gizlensin direkt dosyanın kendisi site.com/dosya olarak gözükmesiydi.

Rica etsem son olarak da bunu deneyebilir misiniz? Büyük ihtimalle çalışacaktır.

Kod:
RewriteEngine On

RewriteRule ^([^/]+)$ /$1.html [L]
RewriteRule ^(.+?)/([^/]+)$ /$2.html [L]
 
Rica etsem son olarak da bunu deneyebilir misiniz? Büyük ihtimalle çalışacaktır.

Kod:
RewriteEngine On

RewriteRule ^([^/]+)$ /$1.html [L]
RewriteRule ^(.+?)/([^/]+)$ /$2.html [L]
İlettiğiniz kodu .htaccess dosyasına uyguladım. Sonuçlar ise şöyle oldu:


site.com/ornek.html yerine site.com/ornek yazınca doğru bir şekilde site.com/ornek.html içeriği çıkıyor. Bu site.com/herhangi-bir-dosya.html URL yapılarında istediğim oldu.

Klasörlü URL yapısına sahip olanlarda durum şöyle:

site.com/klasor1/sayfa.html yerine /sayfa yazınca yine 404 döndürüyor. Bu sefer diğer durumlardan farklı olarak kısaltılmış URL yerine tam URL yapısını yazdığım zamanda 404 verdi yani site.com/klasor1/sayfa.html olarak yazınca da 404. Diğer kurallarda mesela /sayfa olarak çalışmasa da tam URL yapısını yazdığım zaman doğru bir şekilde içerik çıkardı.

Ardından site.com/klasor1/klasor2/ornek.html ve /klasor1/klasor2/klasor3/dosya.html URL yapılarını da /ornek ve /dosya olarak denedim onlarda aynı şekil 404 verdi. Yani yazdığınız kural sadece site.com/herhangi-bir-dosya.html URL yapıları için çalıştı.
 
İlettiğiniz kodu. Htaccess dosyasına uyguladım. Sonuçlar ise şöyle oldu:

site.com/ornek.html yerine site.com/ornek yazınca doğru bir şekilde site.com/ornek.html içeriği çıkıyor. Bu site.com/herhangi-bir-dosya.html URL yapılarında istediğim oldu.

Klasörlü URL yapısına sahip olanlarda durum şöyle:

site.com/klasor1/sayfa.html yerine /sayfa yazınca yine 404 döndürüyor. Bu sefer diğer durumlardan farklı olarak kısaltılmış URL yerine tam URL yapısını yazdığım zamanda 404 verdi yani site.com/klasor1/sayfa.html olarak yazınca da 404. Diğer kurallarda mesela /sayfa olarak çalışmasa da tam URL yapısını yazdığım zaman doğru bir şekilde içerik çıkardı.

Ardından site.com/klasor1/klasor2/ornek.html ve /klasor1/klasor2/klasor3/dosya.html URL yapılarını da /ornek ve /dosya olarak denedim onlarda aynı şekil 404 verdi. Yani yazdığınız kural sadece site.com/herhangi-bir-dosya.html URL yapıları için çalıştı.

Yani amacınız çok farklı bir şey, hiç denemedim bildiğim kadarıyla olanları yazdım.

Kod:
RewriteEngine On

RewriteRule ^ornek-anasayfa$ /klasor1/klasor2/klasor3/ornek-anasayfa.html [L]

Bu tarz bir yapıyı Apache'nin dokümanlarında arayarak derli toplu şekilde çözme şansınız olabilir.
 

Technopat Haberler

Yeni konular

Geri
Yukarı
09:05:00