(Установка: Drupal 6.20, Boost 1.18, Nginx 0.7.67)
Когда URL-адрес усиленного узла содержит символ →
или 中国新闻网新闻中心
, узел правильно кэширован в каталоге кэша и правильно отражает URL-адрес.
Но при доступе к узлу вместо этого загружается некэшированный узел.
Ниже приведены правила Nginx, которые я использую:
server {
server_name *.com *.net *.org;
location / {
root /var/www/html/$host;
index index.php;
set $boost "";
set $boost_query "_";
if ( $request_method = GET ) {
set $boost G;
}
if ($http_cookie !~ "DRUPAL_UID") {
set $boost "${boost}D";
}
if ($query_string = "") {
set $boost "${boost}Q";
}
if ( -f $document_root/cache/normal/$host$request_uri$boost_query.html ) {
set $boost "${boost}F";
}
if ($boost = GDQF){
rewrite ^.*$ /cache/normal/$host/$request_uri$boost_query.html break;
}
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
break;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$host$fastcgi_script_name;
include fastcgi_params;
}
}
Я пробовал добавить charset utf-8;
под http {
и под server {
. Оба они не работают.
Попробуйте использовать $ uri вместо $ request_uri в ваших ifs. $ request_uri не обрабатывается, поэтому% закодированных объектов все еще закодированы. $ uri был декодирован, возможно, это то, что вам нужно.