Симпатичные URL без mod_rewrite, без .htaccess

Теги ссылки на Ember используют маршруты для открытия новых представлений, поэтому вы можете выполнять любые функции, которые вы хотите добавить в атрибут действия action ссылки в методе setupController целевого маршрута, а не в действии контроллера.

См. Здесь в руководстве Ember: http://emberjs.com/guides/routing/setting-up-a-controller/

. Это работает, только если вы хотите выполнить действие каждый раз при доступе к маршруту, в отличие от конкретных ссылок.

Обязательно добавьте строку controller.set('model', model); вместе со всем, что вы там вставили.

10
задан Kriem 10 June 2009 в 13:23
поделиться

7 ответов

Если у вас есть права на настройку документов об ошибках для вашего сервера, вы можете использовать это для перенаправления запросов 404.

Например, для Apache ( http: //httpd.apache .org / docs / 2.0 / mod / core.html # errordocument )

ErrorDocument 404 /index.php

Затем в index.php вы можете продолжить свой запрос, используя данные из массива $ _SERVER.

11
ответ дан 3 December 2019 в 14:44
поделиться

Достаточно простой способ:

  • объявить 404 ErrorDocument (например, PHP) в .htaccess
  • проанализирует запрос с помощью $ _ SERVER и посмотрите, соответствует ли он какому-либо результату
  • , если да, замените HTTP-статус 404 на статус 200, используя header () и включите индекс. php
3
ответ дан 3 December 2019 в 14:44
поделиться

У вас также могут быть URL-адреса, подобные

http://domain.com/index.php/Blog/Hello_World

, прямо из коробки с PHP5. Затем вы можете прочитать параметры URL, используя

echo $_SERVER['PATH_INFO'];

Не забудьте проверить / отфильтровать PATH_INFO и все другие переменные запроса, прежде чем использовать их в своем приложении.

7
ответ дан 3 December 2019 в 14:44
поделиться

Единственный способ - использовать пользовательскую страницу 404. У вас нет возможности интерпретировать файлы без расширений с помощью интерпретатора PHP без перенастройки MIME-типов веб-сервера. Но вы говорите, что не можете редактировать даже .htaccess, поэтому другого выхода нет.

2
ответ дан 3 December 2019 в 14:44
поделиться

Если опция MultiViews включена или вы можете убедить того, кто владеет ключами, включить ее, вы можете создать сценарий с именем Blog.php, который будет передавать запросы к example.com/Blog/foo и получите '/ foo' в $ _ SERVER ['PATH_INFO'] .

0
ответ дан 3 December 2019 в 14:44
поделиться

Если вы опустите косую черту в конце, Apache будет обслуживать первый файл [в алфавитном порядке], который соответствует этому имени, независимо от расширения, по крайней мере, на 2 серверах, к которым у меня есть доступ.

Я не знаю, как вы могли бы использовать это для решения вашей проблемы, но в какой-то момент это может быть полезно.

Например, если http://www.somesite.com/abc.html и http://www.somesite.com/abc.php существуют и http: // www. .somesite.com / abc запрашивается, http://www.somesite.com/abc.html будет обслуживаться.

3
ответ дан 3 December 2019 в 14:44
поделиться

Вы можете написать класс URI, который анализирует указанный вами удобный URL.

1
ответ дан 3 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: