所以我一直在为所有PHP项目使用apache,但现在我被迫在服务器上使用nginx。我不知道如何用nginx做漂亮的网址。所以我开始将我的.htaccess文件转换为nginx配置脚本,并尝试修改nginx配置文件,但没有运气。
这是我的 .htaccess 文件:
Options -MultiViews
RewriteEngine On
RewriteBase /wallfly-mvc/public
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
这是我的 nginx.conf 服务器块:
server {
listen 80; listen [::]:80;
server_name deco3801-superflyz.uqcloud.net;
root /var/www/htdocs;
include "set_cookie.conf";
rewrite_by_lua_file "etc/nginx/lua/auth_filter.lua";
location / {
index index.html index.htm index.php index.jsp index.aspx;
try_files $uri $uri/ =404;
}
location /wallfly-mvc/public/ {
if (!-e $request_filename) {
rewrite ^/wallfly-mvc/public/(.+)$ /wallfly-mvc/public/index.php?url=$1 break;
}
}
}
我希望每个请求都指向 public / index.php 。这是我的项目结构:
wallfly-mvc/
app/
public/
index.php
css/
js/
img/
我应该如何更改nginx.conf文件?任何帮助将不胜感激。
答案 0 :(得分:0)
您可以使用location ^~
来捕获目录。它的优先级更高location /
server {
#...
location ^~ /wallfly-mvc/public/ {
if (!-e $request_filename) {
rewrite ^/wallfly-mvc/public/(.+)$ /wallfly-mvc/public/index.php?url=$1 break;
}
}
}