Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Cakephp меняет поведение URL

Автор вопроса: happyhardikОтветов: 2

Мы разрабатываем сайт с помощью CakePHP. У нас есть сервер Windows IIS (общий хостинг) с PHP5, который не поддерживает .htaccess или mod_rewrite, но тем не менее у нас есть работающий сайт, и мы разработали много вещей.

Текущая структура URL выглядит примерно так: mydomain/index.php/user/add

Мы хотим изменить это на что-то вроде: mydomain/index.php?controller=user&action=add

Мы хотим сделать это, так как столкнулись с некоторыми неожиданными проблемами с истечением срока действия сеанса, и мы сомневаемся, что это связано с переходом пользователя с одного URL-адреса на другой, например: mydomain/index.php/user/add to mydomain/index.php/list /edit this измените домен для IIS или PHP, что приведет к истечению срока действия сеанса, но торт отлично интерпретирует страницы.

Если есть способ изменить поведение Cake, чтобы он принимал URL-адреса с вопросом и амперсандом, это было бы здорово.

Заранее спасибо.

  • Вам не нужен index.php в ваших URL-адресах. Cake предназначен для выполнения действий контроллера как домен/контроллер/действие/параметры. Jeff L 24.08.2009
  • Да, но в нашем случае с IIS ему нужен index.php без index.php, он его не откроет, он пытается найти эту папку и файл index.php внутри нее, что дает 404 не найдено. happyhardik 24.08.2009
  • Вы можете попробовать ISAPI_Rewrite 2 (бесплатно), ISAPI_Rewrite 3 (платно) или модуль перезаписи Microsoft IIS (IIS7). deizel 25.08.2009

phpcakephpiismod-rewritequery-string

Ответы

Ответ 1 · Funky Dude

истечение сеанса не вызвано структурой URL. ты проверил?

  1. Configure::write('Session.timeout', '3600'); в core.php. сделай это длиннее
  2. Configure::write('Security.level', 'высокий'); в core.php. сделать его средним или низким
  3. Configure::write('Session.checkAgent', false); в core.php сделайте его ложным. может вызвать проблемы с вызовами ajax

Ответ 2 · рейтинг 1 · Dooltaz

Вы можете попробовать что-то вроде этого:

1) укажите корневой каталог документа IIS в app/webroot 2) Вызовите свое приложение, перейдя по адресу http://site.com/index.php?url=/user/add

Что касается изменения его на controller=user&action=add, единственное, что я могу предложить, это добавить код в ваш файл index.php для перевода формата "controller=user&action=add" в формат url=/user/add. Вы также можете проверить маршрутизатор, чтобы узнать, есть ли функции, которые вы можете использовать для изменения этих вещей.

Если вам нужна дополнительная помощь, я бы разместил вопрос на irc.freenode.net #cakephp

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы