Magento 内页 404 Not Found 但主页使用 nginx 服务器获取
Magento inner pages 404 Not Found but homepage getting with nginx server
这是我的主机文件:
server {
root /path/to/root/domain/html;
index index.php;
server_name servername.de;
location / {
index index.html index.php;
try_files $uri $uri/ @handler;
expires 30d;
}
location ^~ /(app|includes|lib|media/downloadable|pkginfo|report/config.xml|var)/ { internal; }
location /var/export/ { internal; }
location /. { return 404; }
location @handler { rewrite / /index.php; }
location ~* .php/ { rewrite ^(.*.php)/ last; }
location ~* .php$ {
if (!-e $request_filename) { rewrite / /index.php last; }
expires off;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param MAGE_RUN_TYPE store;
include fastcgi_params;
}
}
我已从 Magento 管理面板将 "Use Web Server Rewrites" 更改为 "Yes" 以使 Urls SEO 友好(没有 index.php)。重新启动 nginx 后,我已经从管理面板中清除了 magento 缓存。
任何人都可以帮我找出 nginx 配置正确或为什么会出现此错误。
您可以试试这个配置:
server {
root /path/to/root/domain/html;
index index.php;
server_name servername.de;
location / {
index index.html index.php;
try_files $uri $uri/ @handler;
expires 30d;
}
location @handler { rewrite / /index.php; }
location ~* .php/ { rewrite ^(.*.php)/ last; }
location ~* .php$ {
if (!-e $request_filename) { rewrite / /index.php last; }
expires off;
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param MAGE_RUN_CODE default;
fastcgi_param MAGE_RUN_TYPE store;
}
location ^~ /app/ { deny all; }
location ^~ /includes/ { deny all; }
location ^~ /lib/ { deny all; }
location ^~ /media/downloadable/ { deny all; }
location ^~ /pkginfo/ { deny all; }
location ^~ /report/config.xml { deny all; }
location ^~ /var/ { deny all; }
location @handler {
rewrite / /index.php;
}
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
}
此外,对于这个问题和相关问题,您可以查看官方 Magento 指南:https://www.magentocommerce.com/wiki/1_-_installation_and_configuration/configuring_nginx_for_magento
我自己解决了这个问题。我使用的是 Plesk,并且有一个选项可以添加额外的 nginx 指令。我删除了主机文件“/etc/nginx/conf.d/DOMAIN.conf”([=11= 中的各个站点部分)。记得正确配置“/etc/nginx/nginx.conf”。)并添加了以下内容我在 Plesk 的 "Additional nginx directives" 管理区中的代码。
location / {
index index.html index.php;
try_files $uri $uri/ @handler;
expires 30d;
}
location /. {
return 404;
}
location @handler {
rewrite / /index.php;
}
location ~ .php/ {
rewrite ^(.*.php)/ last;
}
location ~ .php$ {
if (!-e $request_filename) {
rewrite / /index.php last;
}
fastcgi_pass fastcgi_backend;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi.conf;
}
这条线对我产生了影响。
location ~* .php/ { rewrite ^(.*.php)/ last; }
这是我的主机文件:
server {
root /path/to/root/domain/html;
index index.php;
server_name servername.de;
location / {
index index.html index.php;
try_files $uri $uri/ @handler;
expires 30d;
}
location ^~ /(app|includes|lib|media/downloadable|pkginfo|report/config.xml|var)/ { internal; }
location /var/export/ { internal; }
location /. { return 404; }
location @handler { rewrite / /index.php; }
location ~* .php/ { rewrite ^(.*.php)/ last; }
location ~* .php$ {
if (!-e $request_filename) { rewrite / /index.php last; }
expires off;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param MAGE_RUN_TYPE store;
include fastcgi_params;
}
}
我已从 Magento 管理面板将 "Use Web Server Rewrites" 更改为 "Yes" 以使 Urls SEO 友好(没有 index.php)。重新启动 nginx 后,我已经从管理面板中清除了 magento 缓存。 任何人都可以帮我找出 nginx 配置正确或为什么会出现此错误。
您可以试试这个配置:
server {
root /path/to/root/domain/html;
index index.php;
server_name servername.de;
location / {
index index.html index.php;
try_files $uri $uri/ @handler;
expires 30d;
}
location @handler { rewrite / /index.php; }
location ~* .php/ { rewrite ^(.*.php)/ last; }
location ~* .php$ {
if (!-e $request_filename) { rewrite / /index.php last; }
expires off;
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param MAGE_RUN_CODE default;
fastcgi_param MAGE_RUN_TYPE store;
}
location ^~ /app/ { deny all; }
location ^~ /includes/ { deny all; }
location ^~ /lib/ { deny all; }
location ^~ /media/downloadable/ { deny all; }
location ^~ /pkginfo/ { deny all; }
location ^~ /report/config.xml { deny all; }
location ^~ /var/ { deny all; }
location @handler {
rewrite / /index.php;
}
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
}
此外,对于这个问题和相关问题,您可以查看官方 Magento 指南:https://www.magentocommerce.com/wiki/1_-_installation_and_configuration/configuring_nginx_for_magento
我自己解决了这个问题。我使用的是 Plesk,并且有一个选项可以添加额外的 nginx 指令。我删除了主机文件“/etc/nginx/conf.d/DOMAIN.conf”([=11= 中的各个站点部分)。记得正确配置“/etc/nginx/nginx.conf”。)并添加了以下内容我在 Plesk 的 "Additional nginx directives" 管理区中的代码。
location / {
index index.html index.php;
try_files $uri $uri/ @handler;
expires 30d;
}
location /. {
return 404;
}
location @handler {
rewrite / /index.php;
}
location ~ .php/ {
rewrite ^(.*.php)/ last;
}
location ~ .php$ {
if (!-e $request_filename) {
rewrite / /index.php last;
}
fastcgi_pass fastcgi_backend;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi.conf;
}
这条线对我产生了影响。
location ~* .php/ { rewrite ^(.*.php)/ last; }