我正在尝试在我的/etc/nginx/sites-enabled/mydomain.comconfiguration文件中使用以下行。
rewrite ^/(\w+)$ ./index.php?filename=$1 last;
它保持URL短,让我包括index.php的东西,它会适用于每个文件。
当我使用apache和.htaccess文件时,它工作的很好,但是当我将它切换到nginx时,好像php-fastcgi没有处理请求,因为它不以.php结尾
我想我应该调整在同一个文件中的以下部分。
location ~ \.php$ { root /home/mydomain/public_html; fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; }
任何build议,或者我应该恢复到Apache?
而且我也发现,当张贴到一个重写的url,variables没有收到..似乎在重写过程中丢失。
删除句号,并添加参数以保持查询stringvariables的完整性。
rewrite ^/(\w+)$ /index.php?filename=$1&$args last;
您的SCRIPT_FILENAMEpath是好的,所以这意味着PHP没有读取PHP文件的权限。 首先找出你的PHP进程运行的是哪个用户/组(你可以在你的configuration文件中看到,或者运行ps aux | grep "php" )
接下来,您要检查文件本身的权限,确保PHP运行的用户或组具有适当的权限。 如果没有问题,请检查完整的目录path,并确保用户或组对目录具有执行权限,因为进程需要执行权限才能进入该目录。
最后,从h0tw1r3读取答案,并修复你的重写。 🙂
编辑:刚刚注意到在你的重写期间,我认为这实际上是最有可能的,所以如果其他答案解决了你的问题,你可以忽略这一个。