Nginx的 – redirect所有url的根(不显示url中的HTML页面?)

我需要把我以前的网站运行wordpress到一个单一的网站。 我的网站只能包含一个login页面,我希望所有的旧url都redirect到我的网站的根目录。

我有这个工作,但不完全如何我更喜欢。 目前,一切都redirect到mysite.com/index.html,但我希望它直接指向mysite.com。

以下是我在我的位置/ {}标签中使用的redirect代码:

try_files $uri $uri/ /index.php?q=$uri&$args; if ( $uri !~ ^/(index\.php|css|images|uploads|js|robots\.txt|favicon\.ico|wp-admin|launch|wp-login\.php|inc) ) { rewrite ^ http://www.mysite.com/index.html permanent; } 

这段代码redirect除了那些特定的目录和我列出的文件之外的所有内容。 这样,我仍然可以访问我的wp-admin目录,以便将内容添加到Wordpress中,所以当我稍后拔出交换机时,我可以重新切换站点,并更新所有内容并准备启动。

如果我从上面的redirect中删除index.html,我的网站进入redirect循环。 如果我把重写规则指向/,那么我的网站也会进入redirect循环。

有人可以帮助我更新该代码,以便index.html不显示int浏览器窗口作为实际的URL? 我真的很喜欢实际的url是www.mysite.com,而不是www.mysite.com/index.html。

编辑:

我真正需要的是在我的!〜语句中指定根目录。 但是,如果我添加| / | 它允许所有的文件和子目录被忽略…这意味着我的redirect规则永远不会被调用。

我可以只指定一个根目录,而不包括该根目录中的任何文件或子目录? 这样我可以告诉nginx不要redirect到我的域,但是如果它find/index.html,它将redirect到/。

我看到两种方式:

  • 添加|$到正则expression式
  • 设置一个location = /并使其运行/index.php在任何PHP后端你使用(可能通过设置fastcgi_param SCRIPT_FILENAME .../index.php;