我正试图开发一个与WordPress作为无头CMS的vuejs前端网站。
到目前为止一切都很好,但有一件事让我担心。
前端位于domain.com/index.html,因此我将wordpress根文档index.php重命名为_index.php。
RewriteRule ^wp-json/(.*) /_index.php [L]
到apache .htaccess文件以重定向调用。
但是,如果我现在还想使用?json=调用旧的json API,
RewriteRule ?json(*) /_index.php [L]
或
RewriteRule ^?json=(.*) /_index.php [L]
不起作用。
我怎么能同时使用这两个API,不知道为什么rewriteRule不起作用。
我的就是这个样子
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^wp-json/(.*) /_index.php [L]
#RewriteRule ^?json(*) /_index.php [L]
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
顺便问一下:json API V2是否有办法将页面递归地输出为父/子树?
1条答案
按热度按时间elcex8rz1#
所以我将wordpress根文档重命名为
index.php
为什么?如果您在请求根目录时遇到
index.php
优先级问题,请重置DirectoryIndex
。例如:现在,当请求目录时,只检查
index.html
(之前可能设置为类似DirectoryIndex index.php index.html
的值,因此index.php
优先)。RewriteRule
pattern 仅与URL路径匹配,特别是不包括查询字符串。要匹配查询字符串,您需要使用单独的 condition(RewriteCond
指令)并检查QUERY_STRING
服务器变量。例如:
正则表达式
^$
确保只匹配对文档根的请求,而不匹配任何URL路径。^json=
与任何以 *json=
* 开头的查询字符串匹配。(.*)
部分不是必需的。QUERY_STRING
服务器变量不包括?
分隔符本身。注意:regex
?json(*)
(在第一个示例中)无效,您希望得到500响应(如果在Apache上),因为regex将无法编译。/
前缀不是必需的,应该避免使用(这里使用了RewriteBase
指令,实际上这里并不需要)。所以,总的来说,它看起来像这样,有一些小的调整: