我为使用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”,该元素在同一个域中有链接,但不在角度路由下!
答案 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]