Я продолжал получать ошибку, когда добавлял каскадные comboboxes в свое приложение WPF и разрешал ошибку с помощью этого API:
using System.Windows.Data;
private readonly object _lock = new object();
private CustomObservableCollection _myUiBoundProperty;
public CustomObservableCollection MyUiBoundProperty
{
get { return _myUiBoundProperty; }
set
{
if (value == _myUiBoundProperty) return;
_myUiBoundProperty = value;
NotifyPropertyChanged(nameof(MyUiBoundProperty));
}
}
public MyViewModelCtor(INavigationService navigationService)
{
// Other code...
BindingOperations.EnableCollectionSynchronization(AvailableDefectSubCategories, _lock );
}
Я знаю, что это - довольно старый поток, но это могло бы помочь некоторым людям так или иначе.
В основном это перенаправляет любые 404 ошибки к index.php, но если файл будет существовать (введите файл), то это установит правильный корень.
я сделал это от вершины моей головы. Это не могло бы работать правильно далеко, и необходимо поместить правильный путь и конфигурацию fastcgi. Я также отложил все к index.php, поскольку он должен работать как этот с Zend_Framework
error_page 404 = /index.php;
location / {
if (-f $request_filename) {
root /var/www;
}
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/php.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/index.php;
include /etc/nginx/fastcgi_params;
}
Я не знаю ни о каком автоматическом/систематичном способе преобразовать htaccess-файл, необходимо будет, вероятно, сделать это вручную. Nginx wiki является лучшим ресурсом для nginx документации.
Редактирование: я выполняю Платформу Зенда на Nginx сам теперь, и конфигурация похожа на это:
server {
listen 80;
server_name servername.com;
root /var/www/zendapp/public;
location / {
index index.php;
}
# Deny access to sensitive files.
location ~ (\.inc\.php|\.tpl|\.sql|\.tpl\.php|\.db)$ {
deny all;
}
location ~ \.htaccess {
deny all;
}
# Rewrite rule adapted from zendapp/public/.htaccess
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
# PHP scripts will be forwarded to fastcgi processess.
# Remember that the `fastcgi_pass` directive must specify the same
# port on which `spawn-fcgi` runs.
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
location = /50x.html {
root /var/www/default;
}
}
, Как Вы видите, само переписать правило очень просто.
На самом деле я выполняю nginx с drupal сайтом, которые работают как платформа зенда: один index.php как начальная загрузка
это - правило (не протестированный на платформе зенда, только на drupal, но должно быть подобным)
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
break;
}
}
error_page 404 /index.php;
Если бы это было вообще возможно, то я рекомендовал бы, чтобы они установили Apache на нестандартном порте, доступном только от поля Nginx, и сделали, чтобы Nginx проксировал к Apache.
Если вы используете подкаталог для своего проекта, например http: //some.url/myproject/controller/ , тогда вам также необходимо добавить setBaseUrl в ваш файл начальной загрузки.
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initSomeFancyName()
{
$this->bootstrap('frontController');
$frontController = Zend_Controller_Front::getInstance();
$frontController->setBaseUrl('/myproject'); // set the base url!
}
}
Перезапись nginx будет выглядеть так:
location /myproject/ {
if (!-e $request_filename) {
rewrite ^/myproject/(.*)$ /index.php?$1? last;
}
}
PS Знак вопроса не является опечаткой!