Конфигурации Fat Free Framework на поддомене

Я пытаюсь развернуть приложение Fat Free Framework на поддомене. Он хорошо работал на моем локальном сервере, но я получил пустую страницу при развертывании его на поддомене на живом сайте. Я думаю, что я как-то получил свои конфигурации (.htaccess, config / маршруты) неправильно, но я пробовал несколько, но не могу заставить его работать. Мои конфиги:

.маршруты файл

[routes]
GET /games/@gameid/@move = WebPage->getgames

.конфиг файл

[globals]
AUTOLOAD = app/;third_party/;third_party/phpQuery/
DEBUG = 0
UI = views/
ENCODING = utf-8
LOGS= tmp/cache/

.Htaccess файл

#mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L,QSA]

#Hotlinking Protection
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?subdomain.domain.com/.*$ [NC]
RewriteRule \.(js|css|jpg|gif|png|bmp|mp4|3gp|m4a|m4r|aac|mp3|ogg|wave)$ - [F]

#PHP code in HTML file
AddType fcgid-script .php .htm .html .phtml

Я на PHP Версия 5.3.28 Apache 2.3.7

Структура папок

subdomain.domain.com (папка поддомена)

  • .htaccess файл
  • файл index.php
  • папка приложения
  • папка дб
  • папка просмотров
  • третья папка
  • папка tmp

На моем локальном сервере у меня есть файл .htaccess, как это

Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L,QSA]

0

Решение

Это кажется неправильным:

RewriteBase /subdomain.domain.com

Я бы изменил это просто так:

RewriteBase /

Причина в том, что RewriteBase относится только к базе URL самого сервера, а не к чему-то «слева» от этого. Это означает, что это URL вашего основного сайта:

http://subdomain.domain.com

Настройка RewriteBase /subdomain.domain.com будет означать, что правила будут действовать только на URL:

http://subdomain.domain.com/subdomain.domain.com

И чтобы сделать это немного яснее, можно было бы только настроить RewriteBase / (тогда соответствующий RewriteRule) если код выполняется по пути «справа» от базового URL. Допустим, вы установили его в каталоге mycoolapp/ и вы хотели, чтобы это было доступно так:

RewriteBase /mycoolapp/

И тогда вам придется настроить RewriteRule для index.php как это:

RewriteRule . /mycoolapp/index.php [L,QSA]

РЕДАКТИРОВАТЬ: На основании того, что вы предоставляете .htaccess для вашей локальной установки, у вас есть это для вашего mod_rewrite:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L,QSA]

Но на вашей настройке поддоменов у вас есть это:

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L,QSA]

Почему радикальная разница? Просто используйте mod_rewrite материал, который работает из вашей локальной установки. В частности, избавьтесь от этой строки в настройке вашего субдомена:

RewriteBase /

И измени эту строку:

RewriteRule . /index.php [L,QSA]

Быть этим:

RewriteRule .* index.php [L,QSA]

Итак, последний поддомен .htaccess должно иметь это:

#mod_rewrite on
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L,QSA]

#Hotlinking Protection
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?subdomain.domain.com/.*$ [NC]
RewriteRule \.(js|css|jpg|gif|png|bmp|mp4|3gp|m4a|m4r|aac|mp3|ogg|wave)$ - [F]

#PHP code in HTML file
AddType fcgid-script .php .htm .html .phtml
0

Другие решения

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

Внутренняя ошибка сервера
Неустранимая ошибка: синтаксическая ошибка, неожиданная ‘[‘

В частности, мой персонал поддержки веб-хостинга сказал, что это связано с разыменовкой массива PHP. Я цитирую частично ниже

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

Таким образом, мы перешли на PHP 5.4+, и все стало на свои места.

Кстати, я использовал следующий .htaccess

#mod_rewrite on
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]

Нет стресса, нет суеты.

0

По вопросам рекламы [email protected]