htaccess没有重定向网址

时间:2013-08-27 20:41:20

标签: .htaccess redirect

所以我一直坚持这一点,它或多或少地在我的项目上占据了一席之地。

刚开始接受新工作,我目前的任务是为我们正在推出的新项目创建一个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的通知,修复了路径问题。

1 个答案:

答案 0 :(得分:1)

您不需要RewriteCond,因为规则无论如何都会进行匹配,您只需要

 RewriteRule ^contrib/api/ /content/apis/apis.php [L]

这会将任何以contrib / api开头的url重写到文件/content/apis/apis.php