dongyongan9941 2016-09-29 08:24
浏览 112
已采纳

如何使用lang后缀设置nginx友好URL?

I wish to have multilanguage (php/html) site... but i'm very weak in nginx/rewrite In the http address there are 3 variables (ln -language, page, step)

There is a problem when i write https://testpage.org.pl/esp/home the "/esp/" - isnt recognized like $ln variable ...

how can i fix it?

here's my nginx rewrite:

rewrite ^/([a-zA-Z0-9]+)$ /index.php?page=$1 last;
rewrite ^/([a-zA-Z0-9]+)/step-([1-3])$ /index.php?page=$1&step=$2 last;
rewrite "^/([a-z]{2})/$" /index.php?ln=$1 last;
rewrite "^/([a-z]{2})/([a-zA-Z0-9]+)$" /index.php?ln=$1&page=$2 last;
rewrite "^/([a-z]{2})/([a-zA-Z0-9]+)/step-([1-3])$" /index.php?ln=$1&page=$2&step=$3 last;
  • 写回答

1条回答 默认 最新

  • douxi4287 2016-09-30 11:48
    关注

    If your language variable always has 2 or 3 characters, you can just change your rewrites with the language variable in it to:

    rewrite "^/([a-z]{2,3})/$" /index.php?ln=$1 last;
    rewrite "^/([a-z]{2,3})/([a-zA-Z0-9]+)$" /index.php?ln=$1&page=$2 last;
    rewrite "^/([a-z]{2,3})/([a-zA-Z0-9]+)/step-([1-3])$" /index.php?ln=$1&page=$2&step=$3 last;
    

    This will make sure it will only match a language with a length between 2 and 3 and will probably work fine in your case.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题