我已经转换我的.htaccess与Nginx的工作,但我有很多404错误或错误的文件夹和子文件夹重写显示。
这个Nginx的configuration适用于文件夹和子文件夹,但是/view/它会去/home/website/www/index.php
.htaccess :
RewriteRule ^view/execute(.+)$ /home/website/view/exec.php?r=$1 [QSA,L] RewriteRule ^view/status$ /home/website/view/status.php [QSA,L] RewriteRule ^(.+)/$ /home/website/www/index.php?a=$1 [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ /home/website/www/index.php?a=$1 [QSA,L]
和Nginxconfiguration:
listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default_server ipv6only=on; ## listen for ipv6 root /home/website/www; index index.php index.html index.htm; # Make site accessible from http://localhost/ server_name example.com; error_page 404 /home/website/error/index.php?er=404; location / { set $1 "/index.php"; try_files $uri $uri/ @rewrites; root /home/website/www; index index.php index.html index.htm; } location ~ \.php$ { try_files $uri /index.php @rewrites =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # rewrites location @rewrites { rewrite ^/(.*)$ /home/website/www/index.php?a=$1; rewrite ^view/execute(.*)$ /home/website/view/execute.php?a=$1; #rewrite ^view/(.*)$ /home/website/view/index.php?a=$1 last; }
谢谢。
编辑
我有这个错误: [error] 2329#0: *1 FastCGI sent in stderr: "Unable to open primary script: /home/website/www/home/website/www/index.php (No such file or directory)" while reading response header from upstream, request: "GET /view/execute/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:"
带有别名
location / { try_files $uri $uri/ /index.php?a=$uri; } location /view/execute { index test.txt; alias /home/website/view; }
它的工作与test.txt但如果我改变与test.php我有这个错误'No input file specified.'
我的文件夹是这样的:
- /home/ - /website/ - /view/ - execute.php - test.php - test.txt - /www/ - index.php - /function/
URL像example.com/registre/confirm工作,但这个urlexample.com/view/execute不工作:/我testing给permision + X与recursion的文件夹/查看/但不工作
对不起,所有这个问题我noobol大声笑
你的nginxconfiguration不好。 尝试这样的事情:
listen 80; listen [::]:80 default_server ipv6only=on; root /home/website/www; index index.php index.html index.htm; server_name example.com; error_page 404 /home/website/error/index.php?er=404; location / { rewrite ^view/execute(.*)$ /home/website/view/execute.php?a=$1; try_files $uri $uri/ /home/website/www/index.php?a=$uri; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
所以,你configuration中的主要问题是:
如果上面的configuration不起作用,您可以尝试用这些行replacetry_files行:
rewrite ^/(.*)$ /home/website/www/index.php?a=$1; try_files $uri $uri/ =404;