我正在嘗試為在 nginx 上運行的網站配置重寫規則。如果有人登陸該網站,我希望他們看到 的內容,mysite.com/wordpress
但 url 不應更改,它應該保留,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。