Рвал на себе волосы по одной проблеме. Кажется, я не могу понять, почему мой маршрутизатор pushState не работает на нашем сервере разработки, в то время как он отлично работает на двух других реальных серверах (промежуточный и рабочий домен клиента), а также работает на моем локальном сервере MAMP.
Вот мой роутер:
jQuery(function(){
// define routes
var Router = Backbone.Router.extend({
routes: {
'': 'chrono',
':number': 'chrono',
':number/plus': 'chrono'
},
// load views
initialize: function() {
Backbone.history.start({
pushState: true,
hashChange: false // use html5 pushState with hashChange set to false
// to handle navigation of hash anchors
});
},
chrono: function(number) {
url = window.location.hash.split("/");
this.reset();
this.content = new chronoView();
if(number == undefined){
number = 0;
}
if(url[1]=="plus") {
this.content.showMiddleBox();
jQuery('#overlay2').show();
}
},
reset: function() {
if (this.content != undefined){
this.content.hide();
}
}
});
var Router = new Router;
});
В моем файле .htaccess
на нерабочем сервере уже есть довольно много правил перезаписи движка, а сам файл состоит из 200+ строк, но вот то, что я считаю важными частями:
# Block access to "hidden" directories whose names begin with a period. This
# includes directories used by version control systems such as Subversion or Git.
<IfModule mod_rewrite.c>
RewriteCond %{SCRIPT_FILENAME} -d
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 index.php
</IfModule>
# URL and hash rewrite for backbone
# Used for HTML 5 pushState support *NOT WORKING*
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L]
</ifModule>
/* РЕДАКТИРОВАТЬ */
После сравнения файла .htaccess
нерабочего сервера с рабочим сервером.htaccess
я не добился успеха, так как оба файла были практически одинаковыми, за исключением некоторого учета путей к подпапкам. То есть:
Рабочий сервер: RewriteRule ^(.*)$ index.php?/$1 [L]
Нерабочий сервер: RewriteRule ^(.*)$ dj24/index.php?/$1 [L]
И это единственная разница между двумя файлами, но это имеет смысл, потому что версия клиента (рабочий .htaccess) размещается на поддомене без подпапки, т.е. http://subdomain.ClientsDomain.com/
, тогда как наша версия сервера разработки размещает проект на пути подпапки к поддомену, т.е. http://dev.Our_Domain.com/OurApplication
Я начинаю верить, что проблема связана с комбинацией поддомен + подпапка. Любая помощь в этом будет оценена по достоинству. Спасибо!