由 季宏言 |
通常在网站更新后,需要将网站设置成维护模式,然后浏览器访问yourdomain/update.php来完成更新,通常对/update.php正常,但是跳转/update.php/selection后就会出现Not found(404)的情况。
在Nginx环境下,这个问题很大几率是有conf配置不当引起的。
因为一般教程里配置php都只是用location ~ \.php$
。
但 "/update.php/selection"是以"selection"结尾的。这就导致的Nginx会把它重写成index.php?q=/update.php/selection。可想而知肯定是找不到此位置的。
解决的办法是在drupal 8 伪静态文件中添加几行代码,最终完整的rewrite代码如下:
if (!-e $request_filename) { rewrite ^/update.php(.*)$ /update.php?q=$1 last; rewrite ^/(.*)$ /index.php?q=$1 last; } location ~ ^/(index|update)\.php(/|$) { fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_intercept_errors on; }
保存后,停止并重新启动nginx服务,顺利升级。
添加新评论