我正在尝试使用框架 DooPHP 清理 NGINX 中的 URL。
这 => -http://example.com/index.php/something/more/ 至此 => -http://example.com/something/more/
如果有人尝试进入第一个表单,我想从 URL 中删除(清理 URL)“index.php”。就像永久重定向一样。
如何在 NGINX 上进行此配置?
谢谢。
[更新:实际的 nginx 配置]
server {
listen 80;
server_name vip.example.com;
rewrite ^/(.*) https://vip.example.com/$1 permanent;
}
server {
listen 443;
server_name vip.example.com;
error_page 404 /vip.example.com/404.html;
error_page 403 /vip.example.com/403.html;
error_page 401 /vip.example.com/401.html;
location /vip.example.com {
root /sites/errors;
}
ssl on;
ssl_certificate /etc/nginx/config/server.csr;
ssl_certificate_key /etc/nginx/config/server.sky;
if (!-e $request_filename){
rewrite /.* /index.php;
}
location / {
auth_basic "example Team Access";
auth_basic_user_file config/htpasswd;
root /sites/vip.example.com;
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /sites/vip.example.com$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
}
答案1
这是我所寻找的线路,我自己做的。可能有一些错误。
你怎么认为?
server {
....
rewrite ^/index.php/(.*) /$1 permanent;
....
}
答案2
我在 CodeIgniter 1.7 和 2.0 上尝试过,并且我改变了
配置.php$config['uri_protocol'] = "REQUEST_URI";
我补充一下try_files $uri $uri/ /index.php?r=$request_uri;
在 nginx.conf 上,并且工作正常
location / {
auth_basic "example Team Access";
auth_basic_user_file config/htpasswd;
root /sites/vip.example.com;
index index.php;
try_files $uri $uri/ /index.php?r=$request_uri;
}
也许在 DooPHP 上也是一样
答案3
将其添加到 nginx 服务器配置部分。
location / {
if (!-e $request_filename) {
rewrite ^/([^?]*)(?:\?(.*))? /index.php?title=$1&$2 last;
}
if ($uri ~* "\.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$") {
expires max;
break;
}
}
答案4
将此位置对象添加到 nginx.conf 中的服务器配置中。如果location /
已存在,则只需添加此try_files
行。
location / {
try_files $uri /index.php;
}