Я просто перехожу с Apache на Nginx и пытаюсь настроить правила перезаписи. У меня есть виртуальный хост, и это структура виртуального хоста
/var/www/name-of-virtual-host/
├── wp1
│ ├── wp-admin
│ ├── wp-content
│ └── wp-includes
└── wp2
├── wp-admin
├── wp-content
└── wp-includes
Как видите, у меня две разные установки WordPress в разных папках. Итак, я пытаюсь создать правило перезаписи для работы с этими двумя WP.
Это определение моего местоположения:
location / {
try_files @missing $uri;
}
location @missing {
rewrite ^/([a-z-])(/.*)$ /$1/index.php last;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
Если URI / wp1 / постоянная ссылка-оф-сообщения / он должен использовать /wp1/index.php и если / wp2 / постоянная ссылка-сообщения / он должен использовать /wp2/index.php .
Но я получаю перезапись или внутренний цикл перенаправления при внутреннем перенаправлении на ошибка.
Как я могу написать свои правила перезаписи для использования с несколькими установками WP?
ОБНОВЛЕНИЕ 1
Пример файла WordPress .htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp1/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp1/index.php [L]
</IfModule>
# END WordPress
Разве ты не try_files
в неправильном порядке? Возможно, это то, что вызывает у вас головную боль и бесконечные циклы, потому что файл @missing
, ну, действительно отсутствует в вашей файловой системе, и перенаправление обратно на $uri
в самом деле, обязательно должен вызвать бесконечный цикл?
-try_files @missing $uri;
+try_files $uri @missing;
Тем не менее, если у вас только два сайта WordPress, я думаю, что лучшим подходом может быть просто немного копировать и вставлять, вместо того, чтобы пытаться вызывать регулярные выражения и все время каждый раз.
Например, вероятно, было бы лучше иметь следующее, чем пытаться много переписывать и несколько перенаправлений:
location /wp1 {
try_files $uri /wp1/index.php;
}
location /wp2 {
try_files $uri /wp2/index.php;
}
Это сразу привлекает мое внимание:
rewrite ^/([a-z-])(/.*)$ /$1/index.php last;
$1
в этом случае соответствует только один символ.
Однако я не собираюсь углубляться в это. Вместо того, чтобы изобретать колесо заново, вам следует начать с рекомендованной конфигурации. Слишком много ловушек и уроков, чтобы выучить иначе. http://codex.wordpress.org/Nginx