我正在使用 angularJs 构建一个网站。
我有以下文件夹结构:
/
--index.html
--js
--contoller.js
--css
--style.css
--pages
--homepage.html
--faq.html
--about.html
索引页上的相关html是:
<div id="app">
<div ng-view>
<!-- this is where the views are injected -->
</div>
</div>
<li><a href="about">About</a></li>
<li><a href="about/faq">FAQ</a></li>
路由是:
obApp.config(function($routeProvider, $locationProvider) {
$routeProvider
// route for the home page
.when('/', {
templateUrl : 'pages/homepage.html',
controller : 'homepageController'
})
// route for the about page
.when('/about/faq', {
templateUrl : 'pages/faq.html',
controller : 'faqController'
})
// route for the contact page
.when('/about', {
templateUrl : 'pages/about.html',
controller : 'aboutController'
})
})
.htaccess 文件是:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
现在这是我的问题:
当我访问链接时,一切正常 - 所以没关系。当我在浏览器地址栏中输入 url /about
时,它就可以工作了 - 再次正常。然而,当我这样做时 /about/faq
我让一切正常工作,但样式表没有加载。我检查了网络响应,发现它们的内容类型错误:
正如您所看到的,带有 google 字体的外部链接加载正常,只有本地 css 文件以错误的类型发送。
我的链接位于标题中,如下所示:
<link rel="stylesheet" type="text/css" href="css/style.css" >
<!-- external font -->
<link href='http://fonts.googleapis.com/css?family=Courgette' rel='stylesheet' type='text/css'>
话虽这么说,我被困住了。我正在本地计算机上开发它,网址如下:
localhost/websites/angularProject
我的猜测是重定向需要额外的东西。 (?)
最佳答案
改用绝对路径。
您的链接
<link rel="stylesheet" type="text/css" href="/websites/angularProject/css/style.css" >
对 js 和 images 链接执行相同的操作。
index.html
<div id="app">
<div ng-view>
<!-- this is where the views are injected -->
</div>
</div>
<li><a href="/websites/angularProject/about">About</a></li>
<li><a href="/websites/angularProject/about/faq">FAQ</a></li>
对于您的链接,您还可以使用 <base href="/websites/angularProject/" />
html 标签而不是替换所有链接。
htaccess
RewriteEngine On
RewriteBase /websites/angularProject/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
关于regex - AngularJS 和 .htaccess 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25509522/