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

时间:2014-08-17 18:14:06

标签: angularjs apache .htaccess mod-rewrite url-rewriting

我为使用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]

我希望包含路径 / old / 以及路径 / images / 的所有网址都不会被重写!

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

 RewriteCond %{REQUEST_URI} !^/old/

但它不起作用!

此致 洛伦佐

更新

如果你正在使用带有路由的AngularJS,请在<a>元素上使用target =“_ self”,该元素在同一个域中有链接,但不在角度路由下!

1 个答案:

答案 0 :(得分:3)

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

另外,如果你在一个子目录(如/old/或其他东西)中,你应该在RewriteBase添加index.html或前导斜杠。否则它将在当前目录中查找(可能是404错误)。

您可以用这个替换代码

RewriteEngine On

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