问题描述
我需要在 Nginx 上的域子目录中运行一个 TYPO3 网站:example.com/subdir
。
对于普通页面,该网站运行良好,但对于带有 tx_news-records 的页面却运行良好。一旦我调用新闻详细信息页面 (example.com/subdir/detailpages/slug-of-news-record.html
),我就会收到以下错误:
#1537633463 超出范围异常
无法解析哈希
这是我的 Nginx 配置:
location ^~/subdir {
alias /var/www/html/subdirectory;
disable_symlinks off;
index index.PHP index.html index.htm;
try_files $uri $uri/ @subdir;
location ~ \.PHP$ {
include /etc/Nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/var/run/PHP/PHP7.4-fpm.sock;
}
location ~* ^/subdir/fileadmin/(.*/)?_recycler_/ {
deny all;
}
location ~* ^/subdir/typo3conf/ext/[^/]+/Resources/Private/ {
deny all;
}
location ~* ^/subdir/(fileadmin/|typo3conf/|typo3temp/|uploads/|favicon\.ico) {
}
}
location @subdir {
rewrite /subdir/(.*)$ /subdir/index.PHP?/$1$is_args$args last;
}
location ~* ^/subdir/(.*$) {
return 301 /subdir/$1;
}
我的 Nginx 配置中缺少什么,是否有一些一般需要我批准的内容?
解决方法
经过反复试验,我自己找到了解决方案。以下配置对我有用:
location ^~/subdir {
alias /var/www/html/subdirectory;
disable_symlinks off;
index index.php index.html index.htm;
try_files $uri $uri/ @subdir;
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~* ^/subdir/fileadmin/(.*/)?_recycler_/ {
deny all;
}
location ~* ^/subdir/typo3conf/ext/[^/]+/Resources/Private/ {
deny all;
}
location ~* ^/subdir/(fileadmin/|typo3conf/|typo3temp/|uploads/|favicon\.ico) {
}
}
location @subdir {
rewrite /subdir/(.*)$ /subdir/index.php?$args last;
}
location ~* ^/subdir/(.*$) {
return 301 /subdir/$1;
}
和往常一样,这只是一个小小的变化。
location @subdir {
rewrite /subdir/(.*)$ /subdir/index.php?/$1$is_args$args last;
}
改为
location @subdir {
rewrite /subdir/(.*)$ /subdir/index.php?$args last;
}