2015-07-25 3 views
0

У меня есть сайт, который я построил на mvc и C# .net, который отлично работает, теперь я пытаюсь создать мобильный сайт для того же, используя угловой, поэтому я хочу, чтобы URL-адреса были без хэша, поэтому я используйте следующий код в моем JS файлУгловой Прямой Url без hash

var app = angular.module('mobilesite', ["ngRoute", "ngTouch", "mobile-angular-ui", "shoppinpal.mobile-menu"]); 

app.config(['$httpProvider', function ($httpProvider) { 
    $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest'; 
}]); 

app.config(function ($routeProvider, $locationProvider) { 
    $routeProvider 
     .when('/Blog', { 
     templateUrl: "/Blog/Index" 
    }); 

    //$locationProvider.html5Mode(true); 
}); 

app.controller('maincontroller', function ($scope) { 
    $scope.Name = "Index Mobile"; 
}); 

app.controller('blogcontroller', function ($scope) { 
    $scope.Name = "Blog Mobile"; 
}); 

, например, URL для блога будет http://localhost/Blog и она прекрасно работает без каких-либо проблем при нажатии на ссылку.

Но когда я открываю новый браузер и набираю вышеуказанный URL-адрес, я не получаю никакого макета, и только он отображает {{Name}}. Когда я изменил javascript, чтобы использовать хеш, тогда все работает отлично.

Мне что-то не хватает, пожалуйста, помогите.

ответ

0

Спасибо за ответ, но Infact я использую MVC 4.0 и я установил его двумя способами, первый у меня есть сеть. config url переписывать логику с обычного сайта, а так как это мобильная я не хочу разные URL-адреса, поэтому, хотя я сделал свой html5mode равным true, он не работает, поэтому я изменил условие маршрутизатора на нижний регистр и это вызвало.

<rewrite> 
    <rules> 
    <rule name="Add WWW prefix"> 
     <match url="(.*)" ignoreCase="true"></match> 
     <conditions> 
     <add input="{HTTP_HOST}" pattern="^xxxxx\.com"/> 
     </conditions> 
     <action type="Redirect" url="http://www.xxxxxx.com/{R:1}" redirectType="Permanent"/> 
    </rule> 
    <rule name="Lower Case URLs" stopProcessing="true"> 
     <match url="[A-Z]" ignoreCase="false" /> 
     <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{URL}" pattern="WebResource.axd" negate="true" /> 
     </conditions> 
     <action type="Redirect" url="{ToLower:{URL}}" /> 
    </rule> 
    </rules> 
</rewrite> 

но когда я обновил страницу или доступ к нему непосредственно я проверял на макете, если request.isajaxrequest и что сделали магию.

2

Думаю, вам нужно установить $locationProvider.setHtml5Mode(true). См https://docs.angularjs.org/api/ng/provider/ $ locationProvider и AngularJS routing without the hash '#'

Редактировать

Кроме того, необходимо настроить сервер для вас глубокие связи. Посмотрите на эту страницу: https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode

Если вы используете Apache:

<VirtualHost *:80> 
    ServerName my-app 

    DocumentRoot /path/to/app 

    <Directory /path/to/app> 
     RewriteEngine on 

     # Don't rewrite files or directories 
     RewriteCond %{REQUEST_FILENAME} -f [OR] 
     RewriteCond %{REQUEST_FILENAME} -d 
     RewriteRule^- [L] 

     # Rewrite everything else to index.html to allow html5 state links 
     RewriteRule^index.html [L] 
    </Directory> 
</VirtualHost> 
Смежные вопросы