apache 下的 htaccess 转换为 nginx 和 iis - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
veking
V2EX    程序员

apache 下的 htaccess 转换为 nginx 和 iis

  •  
  •   veking 2016 年 7 月 13 日 2505 次点击
    这是一个创建于 3521 天前的主题,其中的信息可能已经有所发展或是发生改变。

    试过在线的 htaccess 转换服务,基本都不行,这个问题困扰很久了,期待高人指点!

    重写规则实现的是多级子目录转换为二级域名绑定,如 http://www.aaa.com/news/a1/b5/xc/admin/index.php?id=1 转换为 http://shop.aaa.com/index.php?id=1 访问

    以下为 apache 的重写规则

    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^shop.aaa.com$

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteBase /

    RewriteRule . /index.php [L]

    RewriteCond %{HTTP_HOST} ^shop.aaa.com$

    RewriteCond %{REQUEST_URI} !^/news/a1/b5/xc/admin

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ /news/a1/b5/xc/admin/$1

    RewriteCond %{HTTP_HOST} ^shop.aaa.com$

    RewriteRule ^(/)?index.php$ news/a1/b5/xc/admin/index.php [L]

    12 条回复    2016-07-14 10:49:04 +08:00
    veking
        1
    veking  
    OP
       2016 年 7 月 13 日
    其中二级目录 news/a1/b5/xc/admin/ 为固定内容和格式
    aprikyblue
        2
    aprikyblue  
       2016 年 7 月 13 日   2
    if ($host = "shop.aaa.com") {
    if (!-e $request_filename) {
    rewrite . /index.phplast;
    }
    if ($request_uri !~ "^/news/a1/b5/xc/admin") {
    rewrite ^(.*)$ /news/a1/b5/xc/admin/$1;
    }
    rewrite ^(/)?index.php$ news/a1/b5/xc/admin/index.php last;
    }

    没测试。。
    aprikyblue
        3
    aprikyblue  
       2016 年 7 月 13 日
    楼上是 nginx ,呃,第三行最后的 last 前面少了个空格。。
    veking
        4
    veking  
    OP
       2016 年 7 月 13 日
    @aprikyblue
    哇,果然是高手!

    还有一点小问题,如何把这种( http://shop.aaa.com/static/images/a.jpg )请求过滤掉,不要重写到 news/a1/b5/xc/admin/index.php 文件
    aprikyblue
        5
    aprikyblue  
       2016 年 7 月 13 日
    你觉得为什么这么简单的事情, 100 多次点击,别人连回复都懒得回?
    lslqtz
        6
    lslqtz  
       2016 年 7 月 14 日
    @aprikyblue 感谢已发送。
    @veking 为啥不再单独开个 server 块呢。。
    我虚拟主机用这个,不过不是这段。。
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.myloli.club$ [NC]
    RewriteRule ^(.*)$ http://myloli.club/$1 [L,R=301]
    RewriteCond %{HTTP_HOST} ^myloli.club$ [NC]
    RewriteCond %{REQUEST_URI} !^/myloliclub/
    RewriteRule ^(.*)$ myloliclub/$1 [L,QSA]
    RewriteCond %{HTTP_HOST} ^(.*)233.dog$ [NC]
    RewriteRule ^(.*)$ http://hloli.club/$1 [L,R=301]
    RewriteCond %{HTTP_HOST} ^(.*)hloli.club$ [NC]
    RewriteCond %{REQUEST_URI} !^/myloliclub/data/
    RewriteRule ^(.*)$ myloliclub/data/$1 [L,QSA]
    RewriteCond %{HTTP_HOST} ^(.*)rori(.*)$ [NC]
    RewriteCond %{REQUEST_URI} !^/comingsoon/
    RewriteRule ^(.*)$ comingsoon/$1 [L,QSA]
    RewriteCond %{HTTP_HOST} ^myipass.tk$ [NC]
    RewriteRule ^(.*)$ http://www.myipass.tk/$1 [L,R=301]
    RewriteCond %{HTTP_HOST} ^www.myipass.tk$ [NC]
    RewriteCond %{REQUEST_URI} !^/mypass/
    RewriteRule ^(.*)$ mypass/$1 [L,QSA]
    veking
        7
    veking  
    OP
       2016 年 7 月 14 日
    @aprikyblue 这个问题困扰我将近一个月了,网上搜索了很多资料都没搞明白,自己也花时间研究了一下 nginx 的重写规则,最后也没搞明白,猪八戒上托管佣金浪费了一个星期,最后服务商解决不退款了……

    可能这个问题真的很简单吧,但是我真没搞明白,谢谢你第一个回复!
    aprikyblue
        8
    aprikyblue  
       2016 年 7 月 14 日 via Android
    aprikyblue
        9
    aprikyblue  
       2016 年 7 月 14 日   1
    @veking
    好吧,的确需要一点储备。。想起当年自己啥也不会纠结这东西哈哈

    就帮你写了吧,是过滤 /static/吧?不是就自己改一下,,

    if ($host = "shop.aaa.com") {
    if (!-e $request_filename) {
    rewrite . /index.php last;
    }
    if ($request_uri ~ "^/static/") {
    break;
    }
    if ($request_uri !~ "^/news/a1/b5/xc/admin") {
    rewrite ^(.*)$ /news/a1/b5/xc/admin/$1;
    }
    rewrite ^(/)?index.php$ news/a1/b5/xc/admin/index.php last;
    }


    给你点建议。。
    如果你是有哪里不明白更详细些说出来哪里不明白,也许乐意教你的更多。。
    或者你愿意给报酬也行。毕竟别人的时间也是时间。
    像你这主题写的直接给要求,就伸手党似得。。估计这里喜欢的人不会很多
    veking
        10
    veking  
    OP
       2016 年 7 月 14 日
    @aprikyblue 万分感谢!
    看了你解决方式,貌似有点新思路了,还是对重写规则不太熟悉,需要继续学习研究。
    留个微信发个红包聊表心意!

    ps :以后会改进一下提问方式,感谢真诚相告!
    aprikyblue
        11
    aprikyblue  
       2016 年 7 月 14 日
    @veking eastphoton
    veking
        12
    veking  
    OP
       2016 年 7 月 14 日
    终于搞定,把最终配置发出来,供大家参考

    set $flag 0;
    if ($host = "shop.abc.com") {
    set $flag "${flag}1";
    }
    if ($request_uri ~ "^(/+)(attachment|static)/") {
    set $flag "${flag}2";
    }
    if ($flag = "012") {
    break;
    }
    if (!-e $request_filename) {
    set $flag "${flag}3";
    }
    if ($flag = "013") {
    rewrite . /index.php last;
    }
    if ($request_uri !~ "^/news/a1/b5/xc/admin") {
    set $flag "${flag}4";
    }
    if ($flag = "014") {
    rewrite ^(.*)$ /news/a1/b5/xc/admin/$1;
    }
    if ($flag = "01") {
    rewrite ^(/)?index.php$ news/a1/b5/xc/admin/index.php last;
    }
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3288 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 11:37 PVG 19:37 LAX 03:37 JFK 06:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86