Dalam artikel ini, kami akan meneroka prinsip asas menggunakan fail .htaccess, yang penting untuk meningkatkan SEO. Fail ini memastikan pengindeksan halaman yang betul oleh enjin carian. Kami akan belajar cara mengurus ubah hala, mengkonfigurasi keselamatan dan meningkatkan prestasi. Selain itu, kami akan memberikan petua tentang cara mengkonfigurasi fail ini secara bebas.
Mengapa .htaccess Diperlukan
Fail .htaccess bertindak sebagai sejenis "kawalan jauh" untuk pembangun web pada pelayan Apache. Ia menawarkan alat yang mudah untuk melaraskan pelbagai parameter dan mengurus tingkah laku tapak web. Apabila akses terus ke fail konfigurasi utama pelayan tidak tersedia (seperti yang sering berlaku dengan pengehosan maya, contohnya), .htaccess menjadi alat yang berguna untuk membuat perubahan yang diperlukan.
Htaccess selalunya terletak dalam folder akar tapak anda atau dalam folder yang memerlukan konfigurasi khas. Sebagai contoh, jika anda menggunakan WordPress, konfigurasi boleh dilakukan melalui pemalam Yoast SEO, yang kami bincangkan dalam artikel mengenai Mengkonfigurasi robots.txt. Dalam kes lain, cukup untuk pergi ke folder yang diperlukan dan mengedit fail .htaccess sedia ada, atau menciptanya jika ia belum dibuat lagi.
Mengkonfigurasi Fail .htaccess
301 Ubah hala htaccess
Ubah hala 301 dalam fail .htaccess boleh disamakan dengan ubah hala kekal pada tapak web. Ia memberitahu enjin carian dan penyemak imbas bahawa halaman itu kini berada secara kekal di alamat baharu dan mencadangkan pengemaskinian penanda halaman dan pengindeksan. Ubah hala sedemikian biasanya digunakan apabila halaman dialihkan atau dipadamkan untuk mengekalkan kedudukannya dalam hasil carian dan mengubah hala pelawat ke lokasi baharu.
Untuk mengaktifkan ubah hala, anda perlu mendayakan arahan yang sepadan dalam fail .htaccess:
RewriteEngine on
Selepas itu, anda boleh mengkonfigurasi bentuk pengalihan yang paling mudah:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>
Ubah hala serupa menggunakan RedirectPermanent arahan kelihatan seperti ini:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>
Ini adalah kaedah ubah hala yang paling mudah untuk dikonfigurasikan. Mari kita pertimbangkan konfigurasi yang menggunakan jenis ubah hala lain yang lebih maju dengan mod_rewrite modul:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]
# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>
.htaccess ubah hala 302, yang menunjukkan penempatan semula sementara, ditemui lebih jarang. Berikut ialah contoh tetapan sedemikian:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
Dokumen Ralat Arahan
Tetapan ini membolehkan anda mengawal perkara yang dilihat pengguna apabila ralat HTTP berlaku di tapak anda. Daripada mesej ralat standard, anda boleh menunjukkan halaman anda sendiri, yang akan menjadi lebih bermaklumat untuk pelawat dan membantu mereka memahami perkara yang berlaku. Cuma ikut sintaks ini untuk digunakan:
ErrorDocument <error_code> <URL_page>
Sebagai contoh,
ErrorDocument 404 /errors/not_found.html
Bermaksud apabila a 404 ralat berlaku, halaman di /errors/not_found.html akan dibuka. URL mutlak ditentukan sama:
ErrorDocument 500 http://example.com/errors/server_error.html
Contoh ini menunjukkan paparan server_error.html halaman pada http://example.com/errors/ sekiranya berlaku 500 kesilapan.
Menafikan Akses kepada Direktori Tapak
Fail .htaccess mempunyai arahan Menafikan daripada semua, yang membantu menafikan akses kepada folder atau fail tertentu pada pelayan web anda. Ini boleh berguna jika anda ingin menyembunyikan maklumat peribadi atau fail penting daripada pelawat tapak untuk memastikan keselamatan data.
Untuk melumpuhkan penyenaraian (melihat semua direktori yang tersedia), anda perlu menambah baris:
Options -Indexes
Contoh menyekat akses kepada direktori tertentu kelihatan seperti ini:
<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>
Begitu juga, anda boleh menafikan akses kepada satu fail:
<Files "file.php">
Order Deny,Allow
Deny from all
</Files>
Atau untuk pelbagai fail dengan sambungan:
<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>
Menyekat Akses melalui IP
Menyekat akses melalui IP dalam fail .htaccess ialah kaedah yang membolehkan anda menyekat akses ke tapak web anda untuk alamat IP tertentu atau kumpulan mereka. Ini boleh berguna jika anda ingin menghalang akses ke tapak anda atau bahagian khususnya untuk orang tertentu atau bot yang tidak diingini.
Menyekat alamat IP tunggal dilakukan dengan arahan:
Order Deny,Allow
Allow from all
Deny from 11.22.33.44
Menyekat beberapa alamat IP dilakukan dengan cara yang sama dengan menduplikasi "Nafikan daripada" baris dengan alamat yang diperlukan.
Untuk menyekat julat alamat IP:
Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24
Untuk membenarkan akses hanya untuk IP tertentu, tambahkan kod:
Order Deny,Allow
Deny from all
Allow from 11.22.33.44
Untuk penafian sepenuhnya akses, gunakan arahan Menafikan daripada semua, dan untuk menyekat alamat dengan topeng, nyatakan Tolak dari 11.22.
Di mana, 11.22 ialah alamat IP topeng.
Menyekat Pelawat oleh Ejen Pengguna
Menyekat pengguna oleh Ejen Pengguna dalam fail .htaccess ialah kaedah mengawal siapa yang boleh mengakses pelayan web anda berdasarkan maklumat tentang penyemak imbas yang digunakan pelawat. Rentetan Agen Pengguna mengandungi data tentang penyemak imbas yang digunakan oleh seseorang untuk berinteraksi dengan pelayan anda dan terima kasih kepada maklumat ini, anda boleh menyekat akses untuk pengguna tertentu.
Cara paling biasa untuk menyekat oleh Ejen Pengguna ialah menggunakan mod_rewrite:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>
Dalam contoh ini:
- RewriteCond %{HTTP_USER_AGENT} digunakan untuk menyemak rentetan User-Agent.
- ^Bot1, ^Bot2, ^Bot3 ialah contoh rentetan Agen-Pengguna yang ingin kami sekat. Pengubah suai NC menunjukkan bahawa perbandingan harus tidak peka huruf besar-kecil.
- RewriteRule ^.*$ - [F,L] terpakai pada permintaan jika mana-mana syarat RewriteCond dipenuhi. Ia menghantar respons dengan kod status 403 Forbidden (F) dan menghentikan peraturan pemprosesan (L).
Caching dalam htaccess
Mengkonfigurasi caching melalui fail .htaccess membantu mempercepatkan tapak anda dengan menjadikannya lebih pantas untuk pengguna. Ia berfungsi seperti ini: fail tertentu, seperti imej, gaya CSS dan skrip JavaScript, disimpan dalam cache penyemak imbas pengguna selepas pemuatan pertama. Kini penyemak imbas boleh menggunakan fail ini daripada cache, bukannya memuatkan semula fail tersebut daripada pelayan setiap kali pengguna melawat halaman. Ini mengurangkan masa pemuatan dan meningkatkan prestasi tapak.
Pertimbangkan contoh:
# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
Untuk sumber yang kerap dikemas kini, sebaliknya, adalah perlu untuk melumpuhkan caching:
# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>
Mengoptimumkan Prestasi Tapak
. mod_deflate and mod_gzip modul dalam Apache membantu memampatkan maklumat yang dihantar pelayan kepada peranti pengguna. Ini menjadikan saiz fail lebih kecil, yang seterusnya mempercepatkan pemuatan halaman. Walau bagaimanapun, adalah penting untuk diingat bahawa sokongan dan konfigurasi modul ini mungkin berbeza-beza bergantung pada pelayan anda.
Contoh penggunaan mod_deflate modul:
<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
Contoh untuk mod_gzip:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>
Kami membincangkan arahan yang paling biasa digunakan. Anda boleh membiasakan diri dengan semua keupayaan fail dalam dokumentasi rasmi.
Cara Semak Kefungsian Fail .htaccess
Untuk menyemak sama ada fail .htaccess anda berfungsi di tapak, anda boleh melakukan langkah berikut:
- Sengaja menukar fail .htaccess dengan ralat. Sebagai tindak balas, pelayan harus memberikan ralat. Kaedah ini menunjukkan sama ada operasi fail biasanya digunakan pada pelayan.
- Semak kefungsian perubahan khusus yang telah anda buat. Sebagai contoh, buat sedikit pelarasan pada salah satu parameter dan menilai kehadiran perubahan.
- Semak kod status halaman jika perubahan berkaitan dengan respons pelayan. Bagaimana untuk melakukan ini, kami telah diterangkan sebelum ini dalam artikel Kod Ralat HTTP: senarai lengkap ralat pelayan.
- Rujuk log pelayan. Mereka memaparkan semua ralat yang berkaitan dengan pengendalian fail .htaccess.
- Menjalankan ujian menggunakan perkhidmatan atau alatan dalam talian.
Adalah penting untuk memahami bahawa untuk menyemak kefungsian fail .htaccess, anda tidak perlu melakukan semua langkah sekaligus. Ia cukup untuk memilih kaedah yang paling sesuai daripada senarai dan menggunakannya.
Kesimpulan
Mengkonfigurasi fail .htaccess ialah langkah penting dalam mengoptimumkan dan melindungi pelayan Apache anda. Kami telah meneroka cara fail ini membantu mengurus ubah hala, memampatkan kandungan dan memastikan keselamatan. Sebaik sahaja anda mahir menggunakan .htaccess, anda memperoleh alat yang berkuasa untuk meningkatkan prestasi dan kefungsian tapak web.