首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从apache到nginx url重写( /*到index.html /$1/$2/*到/$1/$2/index.html )

从apache到nginx url重写( /*到index.html /$1/$2/*到/$1/$2/index.html )
EN

Stack Overflow用户
提问于 2020-06-12 10:27:18
回答 1查看 221关注 0票数 0

你好,我试图从apache迁移到nginx,但是我坚持URL重写。

这是用于NUXT SPA应用程序的。

对于apache,我使用.htaccess来重写url。

但不幸的是,nginx上没有htaccess ..。

以下是预期的结果:

  • website.com/ -> /index.html
  • website.com/ch/en

注意到有很多不同的国家和语言,所以我认为手工编写所有重写都不是一种选择。

我的文件夹结构如下:

代码语言:javascript
复制
dist/
  .htaccess
  index.html
  _nuxt/
     (nuxt generated files)
  data/
     (static file like image, json, etc...)
  ch/
    fr/
      .htaccess
      index.html
    de/
      .htaccess
      index.html
  be/
     fr/
       .htaccess
       index.html

...

我的根.htaccess包含:

代码语言:javascript
复制
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

在我的子文件夹中,例如/ch/en

代码语言:javascript
复制
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /ch/en
  RewriteRule ^index.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /ch/en/index.html [L]
</IfModule>

目前,我尝试在nginx.conf上遵循以下规则

代码语言:javascript
复制
...
location / {
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
}
location /$1/$2/ {
    index  index.html index.htm;
    try_files $uri $uri/ /$1/$2/index.html;
}
...

但是,url rewrinting并没有像预期的那样工作:

例如,/ch/en很好地显示/ch/en/index.html

但是/ch/en/mypage显示的是/index.html而不是/ch/en/index.html

那么,我如何使重写像/* -> /index.html/$1/$2/ -> /$1/$2/index.html on nginx.conf?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-12 10:53:34

试试这个:

代码语言:javascript
复制
error_page 404 /index.html;
location / {
    index      index.html index.htm;
    try_files  $uri /index.html;
}
location ~ ^(/[^/]+/[^/]+) {
    index      index.html index.htm;
    try_files  $uri $1/index.html =404;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62342338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档