.htaccess
我在 apache 中有以下文件,它可以将所有请求重定向到app/index.php
带或不带GET
参数。我刚刚安装了 NGINX,但我的应用程序无法运行。有人能帮忙在 NGINX 中复制相同的功能吗?谢谢。
RewriteEngine on
Options -Indexes
RewriteRule ^$ app/ [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ app/index.php?url=$1 [QSA,L]
答案1
使用重写模块. 类似这样的操作就可以了:
location / {
autoindex off;
rewrite ^/$ app/ last;
if (!-e $request_filename) {
rewrite ^/(.*)$ app/index.php?url=$1;
}
}
答案2
使用尝试文件
大多数配置不需要使用重写模块。
apache 重写规则的意思是:
RewriteRule ^$ app/ [L]
- 将 URL / 发送到应用程序目录RewriteCond %{REQUEST_FILENAME} !-d
- 如果请求不是目录RewriteCond %{REQUEST_FILENAME} !-f
- 如果请求不是文件RewriteCond %{REQUEST_FILENAME} !-l
- 如果请求不是符号链接- 然后将请求发送至
app/index.php?url=$1
在 nginx 中,等效的方法是:
# No automatic directory listings
autoindex off;
# Send the root url to the app dir
index index.php;
rewrite ^/$ app/ last;
# check if the url matches a file, directory and if not send to app/index.php
try_files $uri $uri/ app/index.php?url=$uri;
检查符号链接是多余的,因为符号链接也是一个文件或目录。