在PHP开发中,.htaccess
文件用于配置Apache服务器的URL重写规则,从而实现伪静态效果,伪静态可以让URL看起来更友好、更易读,同时隐藏实际的文件路径和参数。
以下是一些常见的.htaccess
伪静态规则示例:
基本重定向规则
1、将所有请求重定向到index.php
:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?request=$1 [L,QSA]
这条规则会将所有不存在的文件或目录的请求重定向到index.php
,并将原始请求路径作为参数传递给index.php
。
2、将特定格式的URL重定向到相应的PHP文件:
RewriteEngine On RewriteRule ^page/([0-9]+)/?$ page.php?id=$1 [L,QSA]
这条规则会将形如/page/123
的URL重写为page.php?id=123
。
去除URL中的`.php`扩展名
3、去除URL中的.php
扩展名:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^\.]+)$ $1.php [NC,L]
这条规则会将形如/about
的URL重写为/about.php
。
处理多个参数
4、处理多个参数的URL:
RewriteEngine On RewriteRule ^user/([0-9]+)/([a-zA-Z]+)/?$ user.php?id=$1&name=$2 [L,QSA]
这条规则会将形如/user/123/john
的URL重写为user.php?id=123&name=john
。
禁止访问某些文件类型
5、禁止访问某些文件类型:
<FilesMatch "\.(ini|log|sql|sh)$"> Order Allow,Deny Deny from all </FilesMatch>
这条规则会禁止直接访问.ini
,.log
,.sql
,.sh
等文件。
强制HTTPS
6、强制使用HTTPS:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
这条规则会将所有HTTP请求重定向到HTTPS。
示例综合应用
7、综合应用示例:
RewriteEngine On # 强制HTTPS RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # 去除URL中的.php扩展名 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^\.]+)$ $1.php [NC,L] # 将所有请求重定向到index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?request=$1 [L,QSA]
这些只是一些基本的示例,实际应用中可能需要根据具体需求进行调整,确保在修改.htaccess
文件后测试其效果,以确保不会破坏现有的URL结构或功能。