我在流明中做了一个项目,我在LAMP服务器上安装了它。我使用htaccess文件从url中剥离index.php。 这是我的htaccess文件
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
这里一切正常。 现在我正在使用LEMP堆栈服务器(nginx)将我的文件移动到新创建的实例。这是流明文件,所以我在我的项目目录中安装了composer。 当我在url(浏览器)中放置一个测试路由时,(例如:website.com/getUser)显示404页面错误。
所以我修改了/ etc / nginx / sites-available / default中的nginx默认文件
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
#try_files $uri =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;
include snippets/fastcgi-php.conf;
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
然后我通过复制默认文件并进行一些更改,为我的网站创建了一个单独的服务器块文件。那个文件在下面。
server {
listen 80 ;
listen [::]:80 ;
root /var/www/html/my.website.com;
server_name my.website.com;
location / {
rewrite ^/(.*)/$ /$1 redirect;
if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
现在,当我输入我的网址(website.com/getUser)时,它正在下载内容。在崇高开放之后,我知道这个文件实际上是index.php,它位于我项目的根目录下(website.com/index.php)
我没有得到,为什么会这样。为什么我无法访问我的路线。问题出在哪里,你们可以帮助我吗?
提前致谢。
答案 0 :(得分:0)
将此添加到您的配置中:
location / {
try_files $uri $uri/ /index.php?$query_string;
}