【发布时间】:2016-03-13 09:29:35
【问题描述】:
首先,我尝试了其他 stackoverflow 用户的几个不同建议,但我没有任何运气。
我正在尝试从插件内部构建一种 api。任务是让外部系统在我的插件中调用一个 URL,以便它启动一个内部过程。
目前我有一个具有构造函数的类。这是在那个构造函数里面。
add_action( 'init', 'my_rewrite' );
function my_rewrite() {
global $wp_rewrite;
$plugin_url = plugins_url( 'my-api.php', __FILE__ );
$plugin_url = substr( $plugin_url, strlen( home_url() ) + 1 );
add_rewrite_rule('/my-api/(.*)', $plugin_url ,'top');
$wp_rewrite->flush_rules(true);
}
这会在我的 htaccess 文件中生成一个 RewriteRule。
RewriteRule ^/my-api/(.*) /wp-content/plugins/my-api/classes/my-api.php [QSA,L]
下面是上下文的整个 .htaccess 文件
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^/slurp-api/(.*) /wp-content/plugins/slurp/classes/my-api.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
无论出于何种原因,当我访问 site.dev/my-api 时,我看到的是 404 页面,而不是应该从 my-api.php 运行的 echo 语句
如果有帮助的话,开发网站正在通过 mamp pro 运行。
任何关于为什么这种重写不公平的指针将不胜感激。
谢谢
【问题讨论】:
-
如果您在 htaccess 上下文中使用这些规则,那么..尝试从所有规则中删除前导斜杠,RewriteRule / myapi
标签: php wordpress .htaccess mod-rewrite