window.location.href在URL

时间:2019-08-09 12:19:37

标签: javascript axios

我正在尝试从axios呼叫重定向,但window.location.href会将我重定向到错误的位置。它以某种方式将目录路径插入url:https://my_site.com/prod/public/en/index / prod / public是我的项目所在的路径

这仅在生产服务器中发生。在开发环境和测试服务器中,一切都很好。我还发现只有在添加索引页时才会发生这种情况,例如,如果我将/ en / product_name放在/ en / index的话,它分叉就好了!!?!?

我的代码:

return axios
    .put(`/lang/` + code)
    .then(response => {
         console.log(response.data);  // en/index
         console.log(location.href);  // https://my_site.com
         window.location.href = "/" + response.data; // redirects me to: https://my_site.com/prod/public/en/index 
     })

我希望转到:https://my_site.com/en/index而不是https://my_site.com/prod/public/en/index

我做错了什么?

2 个答案:

答案 0 :(得分:2)

问题:

window.location.href= "/" + response.data;重定向到页面+ en/index的根目录。在您的情况下,根为/prod/public,因此将其添加到/的起点。

解决方案

如果您位于其他子目录中,则可以改用location.origin + response.data

return axios
    .put(`/lang/` + code)
    .then(response => {
         console.log(response.data);  // en/index
         console.log(location.origin);  // https://my_site.com
         var new_location = location.origin+ "/" + response.data;
         console.log('new location is:' new_location); // to test if the url here is the same as the 1 you get directed to
window.location.href = new_location;
 // redirects me to: https://my_site.com/en/index 
     })

答案 1 :(得分:0)

问题出在.htaccess文件中。

RewriteCond %{REQUEST_URI} !^/prod/public/  
RewriteRule (.*) /prod/public/$1

我仍然不知道为什么只将/ prod / public /放在那条路线上,但是...我解决了这个问题。

谢谢大家!