我正在尝试为在 nginx 上运行的网站配置重写规则。如果有人访问该网站,我希望他们看到的内容,mysite.com/wordpress
但网址不应改变,它应该保持不变。mysite.com
但如果有人访问,mysite.com/some_file.php
他们应该能够看到该文件。在我的位置块中,当我添加 301 重定向时,它可以工作,但当我添加一些重写规则时,它们不起作用,我看到 example.com 上的 root 的内容。请建议如何使重写规则起作用。
这有效,但 URL 发生了变化example.com/wordpress
(这不是所需的结果)
location = / {
return 301 http://example.com/wordpress;
}
这不行
PHP NGINX 配置:
location = / {
# return 301 http://example.com/wordpress;
# nginx configuration
if ($http_host ~ "^(www.)example.com$"){
rewrite ^(.*)$ /wordpress/ break;
}
if ($http_host ~ "^(.*).example.com"){
rewrite ^(.*)$ http://example.com/wordpress/%1/$1 redirect;
}
if (!-e $request_filename){
rewrite ^(.*)$ /wordpress/$1;
}
rewrite ^/(.*)index\.(php)$ http://$http_host/$1 redirect;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass php;
}
答案1
我通过添加解决了这个问题
try_files $uri $uri/wordpress /wordpress/index.php?$args;
到位置 / 阻止并删除所有其他重写规则。它所做的是,首先尝试请求文件,然后是 /wordpress 子文件夹,然后是子文件夹中的 index.php。