![除某些子目录请求外,将所有请求重写到 index.php](https://linux22.com/image/606315/%E9%99%A4%E6%9F%90%E4%BA%9B%E5%AD%90%E7%9B%AE%E5%BD%95%E8%AF%B7%E6%B1%82%E5%A4%96%EF%BC%8C%E5%B0%86%E6%89%80%E6%9C%89%E8%AF%B7%E6%B1%82%E9%87%8D%E5%86%99%E5%88%B0%20index.php.png)
我想重写所有请求/index.php
,除了/css/*
和/js/*
。
这是我的原始配置
location / {
try_files $uri /index.php$is_args$args;
}
可以,但是会让我直接访问所有文件。我试过这个
location / {
rewrite ^(.+)$ /index.php break;
}
但无法解决 PHP 解析中断等奇怪错误。在我让/index.php
重写工作后,我想我应该做一些类似的事情location /css/ { .. }
,但我不太确定。
有办法解决这个问题吗?谢谢。
答案1
实际上,在我发布这个问题后立即就找到了答案。
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location /css/ {}
location / {
rewrite ^ /index.php last;
}
诀窍似乎是将 phplocation
置于其他内容之上。