如何从网站上的url中删除index.html基于angularjs

时间:2013-07-17 12:07:22

标签: javascript html angularjs angularjs-directive angularjs-routing

我没有找到从网址中删除index.html的方法,因为这样看起来真的很难看。

mydomain.com/index.html#/myview1 
mydomain.com/index.html#/myview2

有没有办法删除该部分,就像该网址在用户所在的地方一样清晰。

mydomain.com/myview1
mydomain.com/myview2

提前Tnx。

编辑: 我只是觉得它可以像以下一样工作:

mydomain.com/#/myview1
mydomain.com/#/myview2

与index.html相比要好得多。

但是,如果有更短的解决方案让我知道。

4 个答案:

答案 0 :(得分:2)

激活$location

html5mode

答案 1 :(得分:2)

也许这种方法可以提供帮助:

在app.js配置中添加$locationProvider.hashPrefix();,删除您网址中的index.html。不要忘记添加新的依赖项。之后你的app.js可能看起来像这样:

 angular.module('myApp', [
  'ngRoute'
]).
config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
  $locationProvider.hashPrefix(); // Removes index.html in URL

  $routeProvider.otherwise({redirectTo: '/someroute'});
}]);

请注意,这不会删除主题标签。 您可以在以下位置找到新路线:... / app /#/ someroute

答案 2 :(得分:2)

你必须在服务器端做一些工作来设置它。 html5mode让你成为一部分,但是一旦用户刷新,对文件的引用就会出错。您希望链接具有持久性并且可以共享。基本上要确保任何对url.com/myapp/{etc}(或其他)的请求都被重定向到index.html,并让你的角度应用程序整理路由。

答案 3 :(得分:0)

使用

<rewrite>
    <rules>
        <rule name="RewriteRules" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAll">
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
      </rule>
  </rules>
</rewrite>

在索引页面上

<base href="/" /> 

在您的配置上使用

$locationProvider.html5Mode(true);

应该可以