.htaccess
文件(超文本访问文件)是一个用于配置 Apache Web 服务器行为的配置文件。当放置在 PHP 网站的根目录中时,它可以对网站的行为进行细粒度的控制。以下是 .htaccess
文件在 PHP 网站根目录中的一些常见作用:
mod_rewrite
模块,.htaccess
可以将复杂的 URL 转换为更简洁、友好的形式。例如,将 example.com/index.php?page=about
重写为 example.com/about
。重定向:可以将旧的 URL 重定向到新的 URL,或者将 HTTP 请求重定向到 HTTPS。
RewriteEngine On
RewriteRule ^about$ index.php?page=about [L]
密码保护:可以为特定目录设置密码保护,要求用户输入用户名和密码才能访问。
Order Deny,Allow
Deny from 192.168.1.1
Allow from 192.168.1.0/24
可以自定义错误页面(如 404、500 等),以提供更好的用户体验。
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
可以定义或覆盖 MIME 类型,确保某些文件类型被正确解析。
AddType application/x-httpd-php .php .html
可以设置浏览器缓存策略,优化网站性能。
<FilesMatch "\.(jpg|jpeg|png|gif|ico|css|js)$">
Header set Cache-Control "max-age=31536000, public"
</FilesMatch>
可以防止在没有索引文件(如 index.php
或 index.html
)的情况下列出目录内容。
Options -Indexes
可以覆盖服务器上的 PHP 配置,例如调整 php.ini
中的设置。
php_value upload_max_filesize 20M
php_value post_max_size 20M
可以防止其他网站直接链接到你的图片或其他资源,从而节省带宽。
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
可以设置默认的字符编码,确保页面内容正确显示。
AddDefaultCharset UTF-8
可以强制使用 HTTPS,确保数据传输的安全性。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
.htaccess
文件会在每次请求时被读取,因此过度使用可能会影响服务器性能。.htaccess
文件的权限设置正确,通常为 644
。通过合理配置 .htaccess
文件,可以显著提升 PHP 网站的功能性、安全性和用户体验。