当进来的网址是 A,则自动跑去 B并附带值?

事由
因為別人的域名要轉到自己的服務器上,但原本的文真連結路徑不同,可能會失效
例如原本是 http://love.me/12939 ,文章數據轉到我的服務器上,並會添加兩種類型,網址必須變成 https://love.me/blog/type/sub-type/12939
但是 typesub-type 的變化會取決於文章被指定的類型,例如叫做 abc, prod ,就會變成 https://love.me/blog/abc/prod/12939

問題

  • 這個在 htaccess 有辦法實現嗎?
  • 能怎麼正確的帶入 type/sub-type?除了文章ID沒有變以外其他都得變 ..LOL
阅读 3.2k
3 个回答
  • 首先回答网址跳转的问题,从http://A.com跳转到https://B.com一般可以首先考虑修改DNS解析规则,将原先的A记录(解析到ip)变更为30x/显式跳转记录(各家DNS服务商对这种记录的叫法不太一样,比如我用的阿里云的就叫显式跳转,也有叫URL跳转的,其实都是301/302跳转),记录值直接写成https://B.com就行了,后边的部分需要丢到Web服务的前级去处理
  • htaccess可以处理偏静态的重写(rewrite)类需求,比如将A.com/index.html重写为A.com/index.php,或者是将A.com/auth5/39/重定向到A.com/index.php?cat=auth&id=5&num=39这种,只要加条RewriteEngine on指令再用RewriteRule指令分别写出要筛选和匹配为的URL就行了。但不太清楚你这两个变量的规则是什么,所以也不确定可不可以由前级来做……(另外我Apache也不太熟。。。)
  • 后级也可以做Rewrite,比如我用过PHP框架Yii的相应模块就是urlManager,其它框架也大同小异,都是写正则。。

同域名,如果type与sub-type不固定的话,那么rewrite一般还是要交给后级来做。只有一种情况例外,就是你的前级自带逻辑(比如带有Lua扩展的Nginx版本),这时才能在前级直接处理。

不可以

因为 别人给你的信息少于你需要的必要信息。
别人只给你了 /12411.html 而你需要 type/sub-type/12411.html 如果未能通过其他方式传递参数过来,那么将是不可行状态。

我也觉得不行的,因为这种Nginx的rewrite规则是不支持这种需求的,具体的,你可以看看Nginx的重写规则。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题