.htaccess htaccess错误的重定向与vue路由器

ercv8c1e  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(108)

我在一个旧的php应用程序中添加了一个带有vue routere的新vue应用程序。
如果我在路由www.example.com/foo上并刷新页面,PHP服务器不知道这个URL。返回404错误。没关系。
因此,我添加了一个.htaccess重定向,将每个请求重定向到index.php

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L]

字符串
如果我的vue-router路由是www.mywebsite.com/foo,并且我刷新页面,index.php总是打开的,然后vue-router接管。
如果我使用/php/action/ajaxFile.php URL进行 AJAX 调用,它可以正常工作。
问题是,当我在一个像www.example.com/foo/bar而不是www.example.com/foo的路由中时,每个请求都被重定向到/foo/php/action/ajaxFile.php而不是/php/action/ajaxFile.php,这是不对的,因为它找不到文件。
我如何使它与多级URL的作品请?

wb1gzix0

wb1gzix01#

问题是,当我在www.example.com/foo/bar而不是www.example.com/foo路由中时,每个请求都被重定向到/foo/php/action/ajaxFile.php而不是/php/action/ajaxFile.php
这听起来像是你在客户端JavaScript(Vue应用程序)中(不正确地)使用了 relative URL路径。如果你在/foo/bar上请求php/action/ajaxFile.php(没有斜杠前缀),那么 * 浏览器 * 自然会将其解析为/foo/php/action/ajaxFile.php
您需要使用根相对URL路径(以斜杠开头)。这与您发布的.htaccess文件没有任何关系,无论URL路径深度如何,它都是一样的。

相关问题