如果 url 不包含特定路径,则应用重写规则

JBe*_*a93 6 apache .htaccess mod-rewrite url-rewriting angularjs

我已经为使用 html5 路由的 AngularJs 应用程序编写了此重写规则。

重写网址是这样的:

 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_URI} !^.*\.(jpg|css|js|gif|png|html|woff)$
 RewriteRule ^ index.html  [L]
Run Code Online (Sandbox Code Playgroud)

我希望所有包含路径/old/和路径/images/的 URL都不会被重写!

有人可以帮助我,我尝试添加这样的重写条件:

 RewriteCond %{REQUEST_URI} !^/old/
Run Code Online (Sandbox Code Playgroud)

但它不起作用!

问候, 洛伦佐

更新

如果您使用带有路由的 AngularJS,请<a>在具有同一域中的链接但不在 Angular 路由下的元素上使用 target="_self" !

Jus*_*man 7

您的第三个RewriteCond没用,因为您已经在第一个条件下检查现有文件。

另外,如果你在一个子目录中(比如/old/或者其他东西,你应该RewriteBase在你的index.html.

你可以用这个替换你的代码

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/(old|images)/ [NC]
RewriteRule . /index.html  [L]
Run Code Online (Sandbox Code Playgroud)