動作中のExpressionEngineインストールをApache環境から別のボックスのNginX環境に移行しようとしています。いくつかの.htaccess
書き換えをNginXに変換しようとすると問題が発生しました。
このサイトは多言語モジュールを使用しているため、追加の言語ごとにカスタムの書き換えルールが必要です。
これは、ExpressionEngineを(多言語モジュールなしで)うまく機能させるように見える私の標準の仮想ホスト構成です:
server {
listen 80;
server_name domain.co.uk www.domain.co.uk;
root /var/www/vhosts/domain.co.uk/http;
# Redirects non-www to www
if ($host = 'domain.co.uk') {
rewrite ^/(.*) http://www.domain.co.uk/$1 permanent;
}
access_log /var/www/vhosts/domain.co.uk/log/access.log;
error_log /var/www/vhosts/domain.co.uk/log/error.log;
location / {
index index.html index.htm index.php;
# Removes index.php from URLs
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
}
# Standard pass for all PHP files
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/domain.co.uk/http$fastcgi_script_name;
}
# This is where all the ExpressionEngine magic happens
location ~ \.php($|/) {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
set $script $uri;
set $path_info "";
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/domain.co.uk/http$script;
fastcgi_param SCRIPT_NAME $script;
fastcgi_param PATH_INFO $path_info;
}
}
上記はうまく機能しているようで、私が望むことを実行します。多言語モジュールのドキュメントは、Apacheの設定に基づいています。追加の言語ごとに、独自のhtaccess書き換えルールを備えたディレクトリが必要です-少しこのように:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.domain\.co\.uk$
RewriteRule (.*) http://www.domain.co.uk/ar/$1 [R=301,L]
# Remove index.php
RewriteCond $1 !^(index\.php) [NC]
RewriteRule ^(.*)$ /de/index.php/$1 [L]
次を追加して、上記のルールを再作成しました。
location /de {
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /de/index.php/$1 last;
}
}
上記を追加すると、にアクセスしようとすると404エラーページが表示されますhttp://www.domain.co.uk/de/my_page
。
それで、これはおそらくこれと関係があると思ったので、それを次のfcgi_param SCRIPT FILENAME
ように変更しました:(de
パスの終わりに追加)
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/spectrumhealthcare.co.uk/http/de$script;
これを行うと、にアクセスしたNo input file specified
ときにエラーが発生しますhttp://www.domain.co.uk/de/my_page
。
私は今、一種のレンガの壁にいるので、SOコミュニティを本当に助けることが私を助けることができます。あなたはまだ私を失望させていません:)。