WordPress用のNginx書き換えアルゴリズムに問題があります。
私はこれを書き換えに使っていますが、うまくいきます。
server_name www.domain.com domain.com;
if ($Host != 'domain.com') {
rewrite ^/(.*) http://domain.com/$1 permanent;
}
それはこのURLを作ります。
http://domain.com/?author=1
これに。
http://domain.com/author/username/
これはいいのですが、このようなURLです。
http://domain.com/?author=1&type=like
それはそれを作ります。
http://domain.com/author/username/?type=like
と私はエラーを取得していませんが、クエリが機能していません。
何が足りないの?
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
これはindex.phpを通してすべてを送り、追加された問い合わせ文字列をそのまま保ちます。
PHP-FPMを実行している場合は、セキュリティ対策としてfastcgi_paramsの前にこれを追加する必要があります。
location ~ \.php {
try_files $uri =404;
// fastcgi_param ....
// fastcgi_param ....
fastcgi_pass 127.0.0.1:9000;
}
$ uri '&'$の間の&文字に注意してください。 argsは、それがなくても部分的には機能するので非常に重要ですが、場合によっては失敗します。
正しい:
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
間違っています:
location / {
try_files $uri $uri/ /index.php?q=$uri$args;
}
間違った方法では、複数の引数を処理できます。
https://example.com?myvar=xxx&secvar=xxx // Will work
引数が1つだけ渡されると失敗します。
https://example.com?myvar=xxx // Will NOT work
これは私のためのタイプミスを見つけることを本当に難しくしました、しかし少なくとも私は何か新しいことを学びました^^