.htaccess htaccess未重定向url
所以我有点被困在这上面了,这或多或少让我的项目获得了成功 我刚刚开始一项新工作,我目前的任务是为我们正在启动的一个新项目创建一个API系统。它基于wordpress的一个修改版本,我的目标是接收到/contrib/api的任何请求,并将其直接发送到我设置的一个文件,以整理传入的URL并相应地重定向 以下是我目前拥有的:.htaccess htaccess未重定向url,.htaccess,redirect,.htaccess,Redirect,所以我有点被困在这上面了,这或多或少让我的项目获得了成功 我刚刚开始一项新工作,我目前的任务是为我们正在启动的一个新项目创建一个API系统。它基于wordpress的一个修改版本,我的目标是接收到/contrib/api的任何请求,并将其直接发送到我设置的一个文件,以整理传入的URL并相应地重定向 以下是我目前拥有的: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /contrib/ Rewri
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /contrib/
RewriteCond %{REQUEST_URI} ^/api/
RewriteRule ^/content/apis/apis\.php$ - [L]
RewriteRule ^index\.php$ - [L]
# uploaded files -- no longer needed since we're serving files directly via apache
# RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /network and /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin/network$ $1wp-admin/network/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) wordpress/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ wordpress/$2 [L]
RewriteRule . /contrib/index.php [L]
</IfModule>
如上所述,我的目标是从/contrib/api/接收任何请求并将其重定向到我的文件,而不是继续。相反,它似乎跳过并继续指向wp admin(我认为是在重定向之后)。不管怎样,我的命令似乎没有被抓住,我也不知道为什么
我原以为命令是先处理的,但如果继续处理,将代码移到最后会使它工作吗
我知道这是一件很容易测试的事情,但我希望我能了解我做错了什么,而且我还没有访问服务器来实际上传/测试代码而不经过我的老板,我想两周后,让我的老板每5分钟测试一次代码可能不是一个好主意,呵呵:(
编辑:根据Bob Vale的通知,修复了路径问题。您不需要重写COND,因为规则将无论如何进行匹配,您只需要
RewriteRule ^contrib/api/ /content/apis/apis.php [L]
这将把任何以contrib/api开头的url重写到文件/content/api/api.php好的,实际上,它应该是
RewriteCond%{REQUEST_URI}^/api/RewriteRule^/contrib/api/api\.php$-[L]
我弄乱了文件结构。但是,它不应该尝试转发到文件,但因为找不到文件而失败吗(我的代码不正确)?另外,重写条件不是必须的吗?我只想在url调用API时转发到API,其他所有内容都应移到Wordpress,如下所示?@RhoVisions不,您的规则停止,因为路径不匹配,当不满足条件时,它停止并不执行任何操作。@RhoVisions如果RewriteRule
已经定义了我更新后的答案所做的匹配。如果目标php文件也在同一个Url下,并且您需要使用rewritecond来显式排除itOk,那么这很有意义,我会在早上的第一件事中尝试一下,谢谢!您的更新后的答案是否与例如,如果有人使用contrib/api/auth?或者我可以使用通配符来匹配吗?@rhovisis这已经是一个通配符了。如果在末尾不使用$
,这意味着^contrib/api/
将匹配任何以contrib/api/
开头的内容,因此contrib/api/auth
或contrib/api/auth/anything
或contrib/api/something
都包括在内。
RewriteRule ^contrib/api/ /content/apis/apis.php [L]