在我的nginxconfiguration中,我有以下几点:
location /admin/ { alias /usr/share/php/wtlib_4/apps/admin/; location ~* .*\.php$ { try_files $uri $uri/ @php_admin; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|pdf|zip|rar|air)$ { expires 7d; access_log off; } } location ~ ^/admin/modules/([^/]+)(.*\.(html|js|json|css|png|jpg|jpeg|gif|ico|pdf|zip|rar|air))$ { alias /usr/share/php/wtlib_4/modules/$1/admin/$2; } location ~ ^/admin/modules/([^/]+)(.*)$ { try_files $uri @php_admin_modules; } location @php_admin { if ($fastcgi_script_name ~ /admin(/.*\.php)$) { set $valid_fastcgi_script_name $1; } fastcgi_pass $byr_pass; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/php/wtlib_4/apps/admin$valid_fastcgi_script_name; fastcgi_param REDIRECT_STATUS 200; include /etc/nginx/fastcgi_params; } location @php_admin_modules { if ($fastcgi_script_name ~ /admin/modules/([^/]+)(.*)$) { set $byr_module $1; set $byr_rest $2; } fastcgi_pass $byr_pass; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/php/wtlib_4/modules/$byr_module/admin$byr_rest; fastcgi_param REDIRECT_STATUS 200; include /etc/nginx/fastcgi_params; }
以下是以“404”结尾的请求url:
http://www.{domainname}.com/admin/modules/cms/styles/cms.css
以下是错误日志:
[error] 19551#0: *28 open() "/usr/share/php/wtlib_4/apps/admin/modules/cms/styles/cms.css" failed (2: No such file or directory), client: xxx.xxx.xxx.xxx, server: {domainname}.com, request: "GET /admin/modules/cms/styles/cms.css HTTP/1.1", host: "www.{domainname}.com"
以下url正常工作:
http://www.{domainname}.com/admin/modules/store/?a=manage http://www.{domainname}.com/admin/modules/cms/?a=cms.load
任何人都可以看到问题可能是什么? 谢谢。
PS。 我正在尝试将现有的网站从apache迁移到nginx。
看到您的请求被发送到PHP,我会假设下面的位置块不符合您的请求,虽然这是你的意图。
location ~ ^/admin/modules/([^/]+).*\.html|js|json|css|png|jpg|jpeg|gif|ico|pdf|zip|rar|air))$ {
从nginx文档 :
没有匹配正则expression式的语法。 相反,匹配目标正则expression式并分配一个空白块,然后使用位置/来匹配其他任何东西。
你在那个位置块中的([^/]+)部分的意图是什么? 我想你可以通过简单的删除那部分来达到你想要的效果。
location ~ ^/admin/modules/.*\.html|js|json|css|png|jpg|jpeg|gif|ico|pdf|zip|rar|air))$ {