我在一个旧的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的作品请?
1条答案
按热度按时间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路径深度如何,它都是一样的。