所以我一直坚持这一点,它或多或少地在我的项目上占据了一席之地。
刚开始接受新工作,我目前的任务是为我们正在推出的新项目创建一个API系统。它基于wordpress的修改版本,我的目标是接受/ contrib / api的任何请求,而是将其直接指向我已设置的文件,以便对传入的URL进行排序并相应地重定向。
以下是我目前的情况:
<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>
除了靠近顶部之外,这一切都在我面前:
RewriteCond %{REQUEST_URI} ^/api/
RewriteRule ^/content/apis/apis\.php$ - [L]
如上所述,我的目标是从/ contrib / api /获取任何请求并将其重定向到我的文件而不是继续。相反,它似乎跳过并继续并指向wp-admin(在我认为重定向之后)。无论如何,似乎我的命令没有被抓住,我不知道为什么。
我认为这些命令是先处理的,但如果继续执行,会将我的代码移到最后使其工作吗?
我知道这是一个很容易测试的东西,但是我希望能够对我正在做什么/做错什么有所了解,而且我还没有访问服务器来实际上传/测试代码而没有通过我的老板,我想2周,可能不是一个好主意,让我的老板每5分钟测试一次代码,呵呵:(
编辑:根据Bob Vale的通知,修复了路径问题。
答案 0 :(得分:1)
您不需要RewriteCond
,因为规则无论如何都会进行匹配,您只需要
RewriteRule ^contrib/api/ /content/apis/apis.php [L]
这会将任何以contrib / api开头的url重写到文件/content/apis/apis.php