我有一个网站,我建立在mvc和c#.net工作正常,现在我正在尝试使用角度建立相同的移动网站,所以我希望网址没有哈希所以我使用以下代码我的js文件
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";
});
例如,博客的网址将为http://localhost/Blog,并且点击链接时没有任何问题。
但是当我打开一个新的浏览器并直接输入上面的url时,我没有加载任何布局,只显示{{Name}}。当我改变javascript以使用哈希时,一切都运行良好。
我在这里遗漏了什么,请帮忙。
答案 0 :(得分: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>
答案 1 :(得分:0)
感谢您的回复,但实际上我使用的是mvc 4.0并且我修复了两种方式,首先我从常规站点有web.config url重写逻辑,因为这是移动我不想要不同的网址,所以即使我使我的html5mode变为true,它不起作用,所以我将routeprovider条件更改为小写并触发。
<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,那就是魔术。