.html
Statik bir sayfanın URL'sinden nasıl kaldırılır ?
Ayrıca, herhangi bir url'yi .html
onsuz olana yönlendirmem gerekiyor. (yani, www.example.com/page.html
hiç www.example.com/page
).
.html
Statik bir sayfanın URL'sinden nasıl kaldırılır ?
Ayrıca, herhangi bir url'yi .html
onsuz olana yönlendirmem gerekiyor. (yani, www.example.com/page.html
hiç www.example.com/page
).
Yanıtlar:
Sanırım Jon'un cevabının bir açıklaması yapıcı olacaktır. Devamındaki:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
belirtilen dosya veya dizin mevcut değilse, yeniden yazma kuralının devam ettiğini kontrol eder:
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
Ama bu ne anlama geliyor? Normal ifadeler (normal ifadeler) kullanır . İşte daha önce yaptığım küçük bir şey ...
Bunun doğru olduğunu düşünüyorum .
NOT: test ederken .htaccess
do not 301 yönlendirmeleri kullanabilirsiniz. Tarayıcı 301'leri önbelleğe alacağından, test tamamlanana kadar 302'yi kullanın. Bkz. Https://stackoverflow.com/a/9204355/3217306
Güncelleme: Biraz yanıldım, .
satırsonu hariç tüm karakterlerle eşleşiyor, dolayısıyla boşlukları da içeriyor. Ayrıca, işte yararlı bir normal ifade hile sayfası
Kaynaklar:
http://community.sitepoint.com/t/what-does-this-mean-rewritecond-request-filename-fd/2034/2
https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules
.Html uzantısını URL'lerinizden kaldırmak için aşağıdaki kodu root / htaccess'te kullanabilirsiniz:
RewriteEngine on
RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]
NOT: Başka bir uzantıyı kaldırmak istiyorsanız, örneğin .php uzantısını kaldırmak istiyorsanız, her yerde html'yi yukarıdaki kodda php ile değiştirin .
Apache altındaki .htaccess ile yeniden yönlendirmeyi şu şekilde yapabilirsiniz:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
.Html’yi url’den kaldırmaya gelince, sayfaya .html'siz bağlantı vermeniz yeterlidir.
<a href="http://www.example.com/page">page</a>
!-f
Bu sizin için çalışmalı:
#example.com/page will display the contents of example.com/page.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]
#301 from example.com/page.html to example.com/page
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
Sahip olduğunuzdan da emin olmanız gerekecek Options -MultiViews
.
Yukarıdakilerin hiçbiri benim için standart bir cPanel ana bilgisayarında çalışmadı.
Bu işe yaradı:
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
Cevaplarınız için teşekkürler. Sorunumu zaten çözdüm. Sayfalarımın http://www.yoursite.com/html altında olduğunu varsayalım , aşağıdaki .htaccess kuralları geçerlidir.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*).html\ HTTP/
RewriteRule .* http://localhost/html/%1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*)\ HTTP/
RewriteRule .* %1.html [L]
</IfModule>
Bu .htacess'i url sitemden .html uzantısını kaldırmak için kullanıyorum, lütfen bunun doğru kod olduğunu doğrulayın:
RewriteEngine on
RewriteBase /
RewriteCond %{http://www.proofers.co.uk/new} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ http://www.proofers.co.uk/new/$1 [R=301,L]
RewriteBase /
biraz oldu. Maalesef neden işe yaradığını anlamıyorum, ama sanırım yakında öğreneceğim.
Firebase hosting kullananlar için cevapların hiçbiri bu sayfada çalışmayacaktır. Çünkü .htaccess
Firebase barındırmada kullanamazsınız . Firebase.json dosyasını yapılandırmanız gerekecektir. "cleanUrls": true
Dosyanıza satırı ekleyin ve kaydedin. Bu kadar.
Satırını ekledikten sonra firebase.json şöyle görünecektir:
{
"hosting": {
"public": "public",
"cleanUrls": true,
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
}
.Html uzantısını URL'lerinizden kaldırmak için, root / htaccess'te aşağıdaki kodu kullanabilirsiniz:
#mode_rerwrite start here
RewriteEngine On
# does not apply to existing directores, meaning that if the folder exists on server then don't change anything and don't run the rule.
RewriteCond %{REQUEST_FILENAME} !-d
#Check for file in directory with .html extension
RewriteCond %{REQUEST_FILENAME}\.html !-f
#Here we actually show the page that has .html extension
RewriteRule ^(.*)$ $1.html [NC,L]
Teşekkürler
RewriteRule /(.+)(\.html)$ /$1 [R=301,L]
Bunu deneyin :) işe yarayıp yaramadığını bilmiyorum.