it-swarm-tr.com

.Htaccess dosyama URL yeniden yazma işlemini nasıl uygularım?

URL yeniden yazma yapmak istiyorum (Neden? Bkz. bu sor .) Böylece kullanıcılar gibi adresleri görüyorlar

labouseur.com/course-compilers.html 

bunun yerine basitçe görebilir ve kullanabilirler

labouseur.com/course-compilers

(Daha da iyisi, belki dersleri/derleyicileri yapmak için yeniden yapılandırmalıyım.)

Web sitem için Linux tabanlı bir paylaşılan barındırma hizmeti kullanıyorum, bu nedenle sunucunun idari kontrolüne sahip değilim, ancak .htaccess üzerindeki kontrolüm var. Çevrimiçi okuduğum referanslar bana göre daha az görünüyordu, bu yüzden burada biraz netlik ve tavsiye istiyorum.

17
Alan

Aslında .html'yi sunucunuzdaki dosyalardan kaldırabilir ve htaccess'deki ayarları html dosyası olarak alabilirsiniz, ancak aradığınız şey bu olmayabilir.

Bunu yap :

RewriteEngine on
# Check this condition to ensure that it's not a directory.
RewriteCond %{REQUEST_FILENAME} !-d
# Check this condition to ensure that there's a file there
RewriteCond %{REQUEST_FILENAME}\.html -f
# Replace html with your file extension, eg: php, htm, asp
RewriteRule ^(.*)$ $1.html
13
Rizwan Kassim

Öncelikle, Apache'nin modülde olduğundan ve .htacces dosyalarına izin verildiğinden emin olun, sonra şunu ekleyin:

RewriteEngine on

# Rewrite rules
RewriteRule ^/myoldsubfolder/(.*) /newfolder/$1 

Senin örnek gerektirir

RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI}\.html -f
RewriteRule ^/(([a-zA-Z0-9_]+)/?)$ /$1.html

Tek seviyeli bir dizin yapısı için ve

RewriteRule ^/(([a-zA-Z0-9_]+)/?)+$ /$1.html

Çok seviyeli bir yapı için.

Fakat dikkatli olun

Eğer yapınız varsa

/site/.htaccess
/site/subfolder/.htaccess
/site/subfolder/cats/.htaccess

.htaccess dosyalarındaki alt yazma kuralları, üst klasörlerine göre değişir ve bazı dağınık tekrar yazma döngü durumlarına girebilirsiniz. Yapmalarını engellemek için RewriteCond kullandığınızdan emin olun!

3
Aiden Bell

Yukarıdaki cevaplara ek olarak bir kullanabilirsiniz

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([\w-]+)$ $1.html [L]

([\w-]+) Harflere, kısa çizgi (-) içeren rakamlara izin verir.

(.*), ne olursa olsun her isteği yeniden yazar; bu, erişimde dahili sunucu hatasına neden olan aşağıdaki kurallara aykırı olabilir.

2
Abhishek Gurjar

Bunu gerçekleştirmek için bir .htaccess dosyası kullanmak zorunda değilsiniz. Dosyalarınızı dizinlere yerleştirin ve "labouseur.com/course-compilers.html" kullanmak yerine, index.html dosyasını adlandırın ve "course-compilers" adlı bir dizine koyun. Ardından, bu dizine işaret ettiğinizde, dizin varsayılan olarak sunulur, ancak URL’de gösterilmez. Böylece linklerinizi "labourseur.com/course-compilers" olarak yazabilirsiniz ve her şey yoluna girecek.

.Htaccess gerekli değil.

1
Joel Glovier