html5mode angularjs ui-router .htaccess重写规则

时间:2016-03-11 19:27:50

标签: php angularjs regex apache mod-rewrite

我知道这个问题已经多次被问到堆栈溢出,但我无法得到正确的结果。

我试过这个链接:htaccess redirect for Angular routes

https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode

基本上,我在我的应用中使用https://github.com/angular-ui/ui-router进行导航,

我们有这样的网址:

  1. www.xyz.com/products< =此网址正常工作(在硬刷新时工作正常)

  2. www.xyz.com/displayOrders/12&lt; =这个网址在我们这样做时无效     从浏览器硬刷新。的 WHY吗

  3. 我的嵌套视图也无效:

    1. www.xyz.com/message/notfication/12
    2. 我在.htaccess文件中写的是:

      <IfModule mod_rewrite.c>
          Options +FollowSymlinks
          RewriteEngine On
          # Don't rewrite files or directories
          RewriteCond %{REQUEST_FILENAME} -f [OR]
          RewriteCond %{REQUEST_FILENAME} -d
          RewriteRule ^ - [L]
      
      
        RewriteRule (.*) index.html [L]
      
      
      </IfModule>
      

      我的基本标签是:

      <base href="/"> and i also made html5mode as true in app.js
      

1 个答案:

答案 0 :(得分:1)

你应该像这样编写.htaccess

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule (.*) /index.html [L]
</IfModule>

如果您的项目在子目录示例中:www.xyz.com/shop/您应该写这样的最后一次重写

RewriteRule (.*) /shop/index.html [L]

和这样的基本标签

<base href="/shop/">