概念
伪静态:假的静态文件,主要作用将动态的文件作为静态的文件传输出去,将动态的url变成动态的url显示。
这里以nginx的伪静态为例解释原理。
php">if (!-e $request_filename):
``
这个条件检查请求的文件或目录是否实际存在于服务器的文件系统中。!-e表示“如果文件或目录不存在”。如果请求的资源是一个静态文件(如CSS、JS或图片等),并且该文件存在,Nginx会直接提供该文件,不会执行后续的rewrite规则。
```php
rewrite ^(.*)$ /index.php?s=/$1 last;
这里的意思是
如果上述条件成立,即请求的不是实际存在的文件或目录,这条规则就会触发。它会捕获请求的URI(通过^(.*)$正则表达式),然后重写请求到/index.php?s=/$1。这里$1是被捕获的URI部分,通过s=参数传递给index.php,这是ThinkPHP用来处理动态路由的标准方式。
实现
windows下
apache
php"><IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
nginx
单入口
php"> location / {if (!-e $request_filename) {rewrite ^(.*)$ /index.php?s=/$1 last;break;}}
多入口,有index和admin
php">location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
if (!-e $request_filename) {
rewrite ^(.*)$ /admin.php?s=/$1 last;
break;
}
}
linux下
编写.htaccess文件
影响
出现验证码刷新不出来,静态文件加载不出来等情况