Apache htaccess重写除一个以外的所有内容

Apache htaccess重写除一个以外的所有内容,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我有一个Angular2应用程序,为了让路由正常工作,我在.htaccess中设置了一个重写,指向/ 现在我的问题是,我需要重定向一个我编写的API,它不符合我当前的重写规则 这是我的.htaccess RewriteEngine on RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^/api$ http://127.0.0.1:8888/ [P,L] RewriteCond

我有一个Angular2应用程序,为了让路由正常工作,我在.htaccess中设置了一个重写,指向/

现在我的问题是,我需要重定向一个我编写的API,它不符合我当前的重写规则

这是我的.htaccess

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off

RewriteRule ^/api$ http://127.0.0.1:8888/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/api/(.*)$ http://127.0.0.1:8888/$1 [P,L]


RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*) /index.html [NC,L]
第一次重写应该让我在

主机名/v1/api/etc/etc/etc/someParam

第二个应该让我的Angular2路线起作用

这两条规则都影响了我的Angular2应用程序

我如何制定两条规则,第一条规则是/api/****重写到localhost:8888/api/v1/


然后所有其他的东西都指向我的Angular2应用程序?

你想拆分这个:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/api/(.*)$ http://127.0.0.1:8888/$1 [P,L]
分成两条规则

解决方案:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/api/****$ http://localhost:8888/api/v1/... [P,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
ReweiteCond %{REQUEST_URI} !^/api/****$ [NC]
RewriteRule ^/api/(.*)$ http://127.0.0.1:8888/$1 [P,L]

当然,您必须相应地替换
***
..

我试过这个,但是/api/。。。get被重定向到/index.html。让我们假设以下内容,我想重定向到,您的解决方案有效吗?在保留index.html重写规则的同时,我似乎无法让它发挥作用。如果可以,请确保子目录中没有任何.htaccess文件,因为它们可能会覆盖父目录的.htaccess规则。