angularJS pushstate的htaccess设置

时间:2015-09-02 10:59:14

标签: angularjs apache .htaccess

我正在使用带有AngularJS的pushstate,但我对htaccess文件有一些问题。 这是HTML5mode为false的URL:

http://127.0.0.1/mpu/#!/Roma/home (罗姆是一个变量)

目前我正在使用它:

<ifModule mod_rewrite.c>
  Options +FollowSymLinks
  IndexIgnore */*
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule (.*) index.html
</ifModule>

结果,我有这个: http://127.0.0.1/mpu/home

但我需要和#34; Roma&#34;在mpu之后

有人可以帮我写一下正确的htaccess吗?

1 个答案:

答案 0 :(得分:2)

我建议你阅读这篇文章https://ngmilk.rocks/2015/03/09/angularjs-html5-mode-or-pretty-urls-on-apache-using-htaccess/

<强>更新

这是我的根文件夹

上的 .htaccess 文件
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^ index.html [L]

这是我的虚拟主机(我在Windows上使用Xampp)。

转到 C:\ xampp \ apache \ conf \ extra 并编辑 httpd-vhosts.conf 文件,不要忘记添加 127.0。主机文件中的0.1 example.local

<VirtualHost *:80>
    ServerName example.local
    DocumentRoot "C:\xampp\htdocs\YOUR_PROJECT_FOLDER"
    <Directory "C:\xampp\htdocs\YOUR_PROJECT_FOLDER">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

重新启动Apache服务器,你很高兴。

完成此设置后,这将是Angular

中路由部分的代码
var Config = function($locationProvider, $stateProvider, $urlRouterProvider){

    $stateProvider
    .state('home', { 
        url : '/',
        templateUrl : 'home.html'
    })
    .state('city', {
        url : '/:city/home',
        templateUrl : 'city.html'
    });

    $urlRouterProvider.otherwise('/');

    $locationProvider.html5Mode(true);

};

Config.$inject = [
    '$locationProvider',
    '$stateProvider',
    '$urlRouterProvider'
];

app.config(Config);