2014-09-13 3 views
0

Я хотел бы иметь свои маршруты, такие как Stack Overflow. Поэтому, если я перейду на /category/id/, сервер перенаправит на /category/id/name. Однако я не могу получить маршрутизацию angularjs, чтобы забрать мои маршруты, когда включаю косую черту.routeProvider не подбирает маршрут AngularJS

Так это мой secnarios:

localhost:81/butwhy => works  
localhost:81/category/id => redirects to localhost:81/category/fail  
localhost:81/category/id/name => redirects to localhost:81/category/id/fail 

routeProvider кажется только, чтобы забрать часть после последнего слеша. Зачем?

app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) { 

    $routeProvider. 
     when('/category/:id/:name', { 
      templateUrl: '/view/example.html', 
      controller: 'ExampleCtrl' 
     }). 
     when('/category/:id', { 
      templateUrl: '/view/example.html', 
      controller: 'ExampleCtrl' 
     }). 
     when('/butwhy', { 
      // just for testing 
     }). 
     when('/', { 
      templateUrl: '/view/examples.html', 
      controller: 'ExamplesCtrl' 
     }).  
     otherwise({ 
      redirectTo: 'fail' 
     }); 

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

Я не знаю, если это имеет значение, но я использую CakePHP с WAMP и angularjs версии 1.2.23

EDIT:

я следующий в/sitefolder/WebRoot .htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule> 

А в/sitefolder/.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 

В CakePHP вид находится в/sitefolder/просмотр/и мнения HTML для угловой в/sitefolder/Webroot/просмотр/

+0

есть настройки HTAccess работать с html5mode? Если нет, вам нужно, и если так что-то не так. – charlietfl

+0

Спасибо, Чарльетфл, возможно, это так. По крайней мере, я знаю, что искать сейчас –

+0

Я передумал. Я не верю, что это htaccess, поскольку маршрутизация работает на сервере и возвращает макет с настройкой angularjs, как и следовало ожидать. Так почему бы ИД быть? Вчера я протестировал несколько разных конфигураций htaccess, хотя без успеха –

ответ

1

Я никогда не получил его на работу с CakePHP выступающей раскладку. Однако я узнал, что вы можете иметь вложенные представления в ui-router. Поэтому мне больше не нужно обслуживать макет через cakephp.

С регулярным index.html в качестве макета в корневой директории и все АЯКС звонки через/AJAX/Настройка имени я .htaccess, как это:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^ajax index.php [NE,L] 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.html [NE,L] 
</IfModule> 

Но это не работает, когда я просмотрел непосредственно localhost: 81, тогда он использовал index.php вместо index.html. Он работал, когда у меня был путь в URL. Чтобы исправить это было изменить порядок в httpd.conf так index.html находится перед index.php

<IfModule dir_module> 
    DirectoryIndex index.html index.php index.php3 index.htm 
</IfModule> 
-1

Я думаю, что вам не хватает #, пожалуйста, попробуйте следующее.

URL-адрес должен быть

локальный: 81/#/категория/Идентификатор
локальный: 81/#/категория/идентификатор/имя

+1

html5mode удаляет хэш. – Shomz

Смежные вопросы