我有2个网站都可以在同一个网址上访问,只有一个可以从这样的子文件夹访问:
website.com /
website.com/blog
现在他们在Apache下运行,我想切换到Nginx,我偶然发现了这种方法中Nginx的重写规则。
托管服务器是带有Plesk的Ubuntu,因此我需要编辑的唯一部分是负责基于URL格式重写的部分。
最初的出发点是这一点:
if (!-e $request_filename) {
set $test P;
}
if ($uri !~ ^/(plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon|internal-nginx-static-location)) {
set $test "${test}C";
}
if ($test = PC ) {
rewrite ^/(.*)$ /index.php?$1;
}
这适用于主网站,但位于博客的网站会显示主页,但任何其他内页都会返回404错误。
因此,我对此采取的第一种方法是:
if (!-e $request_filename) {
set $test P;
}
if ($uri !~ ^/(plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon|internal-nginx-static-location)) {
set $test "${test}C";
}
if ($uri ~ ^/(*blog*)) {
set $test "B";
}
if ($test = PC ) {
rewrite ^/(.*)$ /index.php?$1;
}
if ($test = B ) {
rewrite ^/(.*)$ /blog/index.php?$1;
}
但是这不起作用所以我尝试了一种基于这样的位置的方法:
location / {
if (!-e $request_filename) {
set $test P;
}
if ($uri !~ ^/(plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon|internal-nginx-static-location)) {
set $test "${test}C";
}
if ($test = PC ) {
rewrite ^/(.*)$ /index.php?$1;
}
}
location ~ /blog {
root httpdocs/blog
if (!-e $request_filename) {
set $test P;
}
if ($uri !~ ^/(plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon|internal-nginx-static-location)) {
set $test "${test}C";
}
if ($test = PC ) {
rewrite ^/(.*)$ /index.php?$1;
}
}
答案 0 :(得分:0)
它适用于当前配置:
if (!-e $request_filename) {
set $test P;
}
if ($uri !~ ^/(plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon|internal-nginx-static-location|blog)) {
set $test "${test}C";
}
if ($uri ~ ^/(blog)) {
set $test "${test}B";
}
if ($test = PC ) {
rewrite ^/(.*)$ /index.php?$1;
}
if ($test = PB ) {
rewrite ^/(.*)$ /blog/index.php?$1;
}