HeJ小鼠,
我有以下情况:我有两个运行的系统(Magento和Codeigniter)应该在同一个URL下运行。 Magento只负责几个网址:
http://dev/checkout
,http://dev/kasse
例如应该由位于/vagrant/magento
的magento提供
所有其他请求应由位于/vagrant/codeigniter
我有点工作,但它使用if和我必须在两个文件中添加文件夹,这是不好的。而php有时认为它的根位于错误的文件夹(/vagrant/
,没有magento文件夹)
我做错了什么,怎么做对了?
谢谢!
# ./sites-available/default
server {
listen 80;
listen [::]:80 default_server ipv6only=on;
server_name rh.dev;
root /vagrant/codeigniter/;
location ~ /(kasse|tools|checkout|warenkorb|skin|media) {
alias /vagrant/magento/;
index index.php;
try_files $uri $uri/ @handler;
}
location / {
index index.php;
if ($request_uri ~* "\.(ico|css|js|gif|jpe?g|png)$") {
access_log off;
expires max;
}
try_files $uri $uri/ @handler;
}
location @handler {
rewrite / /index.php;
}
location ~.php/ {
rewrite ^(.*.php)/ $1 last;
}
include /etc/nginx/php.conf;
}
# ./php.conf
fastcgi_intercept_errors on;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
set $php_root /vagrant/codeigniter/;
if ( $request_uri ~ /(kasse|tools|checkout|warenkorb|skin|media) ) {
set $php_root /vagrant/magento/;
}
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# ./fastcgi_params
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
#fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS $https;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
答案 0 :(得分:1)
首先,我建议您在开始之前备份您的conf文件。
无论如何,你最初做的很棒,但后来你添加了不需要添加的东西,例如
try_files $uri $uri/ @handler;
这行不需要分成两行,你可以将重写合并到其中
try_files $uri $uri/ /index.php;
然后它让我想知道它如何在没有$request_uri
的情况下工作,所以如果不起作用我会尝试使用这一行:
try_files $uri $uri/ /index.php$request_uri;
<小时/> 现在这个块我真的不明白它应该做什么
location ~.php/ {
rewrite ^(.*.php)/ $1 last;
}
我会说完全删除它是安全的,因为它似乎正在重写请求同样的事情。
<小时/> 在php conf中,如果不需要整个事情,可以从文件的路径和位置块理解
set $php_root /vagrant/codeigniter/;
if ( $request_uri ~ /(kasse|tools|checkout|warenkorb|skin|media) ) {
set $php_root /vagrant/magento/;
}
我会说尝试删除所有这些并且它应该仍在工作