24 lines
982 B
ApacheConf
Executable File
24 lines
982 B
ApacheConf
Executable File
<IfModule mod_rewrite.c>
|
|
# 开启重写引擎
|
|
RewriteEngine On
|
|
|
|
# 对应:index index.html index.htm index.php;
|
|
DirectoryIndex index.html index.htm index.php
|
|
|
|
# 1. 如果请求的是真实存在的目录或文件,直接跳过重写
|
|
RewriteCond %{REQUEST_FILENAME} -d [OR]
|
|
RewriteCond %{REQUEST_FILENAME} -f
|
|
RewriteRule ^ - [L]
|
|
|
|
# 2. 对应:location ~ \.php$ { try_files $uri =404; }
|
|
# 保护机制:如果请求以 .php 结尾但文件不存在,直接返回 404 (这也能防止下方的规则产生死循环)
|
|
RewriteCond %{REQUEST_URI} \.php$
|
|
RewriteCond %{REQUEST_FILENAME} !-f
|
|
RewriteRule ^ - [R=404,L]
|
|
|
|
# 3. 对应:try_files $uri $uri/ @extensionless-php; 以及 rewrite ^(.*)$ $1.php last;
|
|
# 将所有找不到的请求追加 .php 后缀进行内部重定向
|
|
RewriteCond %{REQUEST_FILENAME} !-d
|
|
RewriteCond %{REQUEST_FILENAME} !-f
|
|
RewriteRule ^(.*)$ $1.php [L]
|
|
</IfModule> |