Как избежать index.php в использовании маршрута Платформы Зенда, Nginx переписывают

Можно выйти из канала и поместить шаблон в кавычки:

grep "aaa\|bbb"

или используйте -E:

grep -E "aaa|bbb"

или

grep -E aaa\|bbb
2
задан 22 March 2012 в 13:35
4 ответа

Попробуйте что-то вроде этого:

rewrite ^/(.*)$    /index.php/$1;
0
ответ дан 3 December 2019 в 11:59

Идеальное решение действительно предполагает поддержку со стороны приложения, поскольку оно должно понимать, по какому пути оно работает. Это позволяет ему выбирать правильный ресурс для обслуживания и возвращать правильные ссылки и перенаправления. В этом случае конфигурация nginx будет выглядеть примерно так:

location / {
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
}

т.е. просто передать все [0] конкретному скрипту PHP. Это может действительно работать с Zend (я не использовал его сам).

Если приложение не может быть изменено, чтобы понять это, то с переписыванием путей и изменением содержимого все становится беспорядочно. Уловка с перезаписью заключается в том, чтобы убедиться, что перезаписанный путь больше не будет перезаписан. Следующее будет переписывать пути в /index.php и передавать их Zend.

location ~ \.php(/|$) {
    include fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_pass 127.0.0.1:9000;
}

location / {
    rewrite ^/(.*)$ /index.php/$1;
}

Если это не сработает, вероятно, потому что Zend не ' • правильная обработка запроса - проверьте журналы, чтобы узнать, какой путь он пытается найти.

Однако это не приведет к тому, что ссылки, возвращаемые в HTML, или перенаправления, отправленные Zend, будут использовать путь без "index.php" , и у nginx, похоже, нет механизма для их изменения. Проверьте, есть ли у Zend способ настроить корневой путь для ссылок и перенаправлений.

[0] Очевидно, вы захотите напрямую обслуживать статический контент, я это пропустил.

1
ответ дан 3 December 2019 в 11:59

Вам понадобятся местоположения, похожие на это в каждом из ваших местоположений . Я просто пишу пример для / blog location:

location /blog/ {
    try_files $uri $uri/ @blog;
}

location @blog {
    rewrite ^/blog/(.*)$ /blog/index.php/$1 last;
}

Также отмечен в вашей конфигурации: вы можете использовать fastcgi_split_path_info в вашем PHP-местоположении:

1
ответ дан 3 December 2019 в 11:59
# Rewrite rule adapted for Zend Framework
location / {
    index index.php;
    if (!-f $request_filename) {
        rewrite ^(.*)$ /index.php last;
    }
}
0
ответ дан 3 December 2019 в 11:59

Теги

Похожие вопросы