vps交流

[疑问] 请教一下各位大佬这段规则怎么转成htaccess


  1. “`nginx
  2. if (!-e $request_filename) {
  3.     rewrite ^(.*)$ /index.php?s=/$1 last;
  4. }
  5. “`

复制代码

请教一下这段nginx伪静态规则的htaccess版本。

这段Nginx的伪静态规则的作用是检查请求的文件是否存在,如果不存在,则将请求重写为以 `/index.php?s=` 开头的格式,然后将请求的 URI 附加在 `s=` 后面。这种重写规则在 Nginx 中使用,而要将其转换为 Apache 的 `.htaccess` 规则,可以使用以下代码:

“`apache
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?s=/$1 [L]
</IfModule>
“`

### 解释:
– `RewriteEngine On`:启用重写引擎。
– `RewriteCond %{REQUEST_FILENAME} !-f`:检查请求的文件是否存在(`-f` 表示文件),如果不存在则继续重写规则。
– `RewriteCond %{REQUEST_FILENAME} !-d`:检查请求的目录是否存在(`-d` 表示目录),如果不存在则继续重写规则。
– `RewriteRule ^(.*)$ index.php?s=/$1 [L]`:将 URI 重写为 `index.php?s=/请求的URI`,`[L]` 表示这是最后一个规则,执行后停止重写。

这样就实现了类似 Nginx 伪静态规则的效果。