我正在尝试从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
我做错了什么?
答案 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 /放在那条路线上,但是...我解决了这个问题。
谢谢大家!