Используйте Symfony 1.4 без изменения конфигурации Apache - PullRequest
0 голосов
/ 22 мая 2010

Можно ли установить каталог / web в качестве webroot без изменения файла конфигурации apache?

Я попытался использовать следующий код .htaccess, но если перейти на localhost/ module / , отображает ошибку 404.Но если я захожу на localhost / web / module / , тогда все работает.

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    sf/(.*) lib/vendor/symfony/data/web/sf/$1 [L]
   RewriteRule    ^$ web/    [L]
   RewriteRule    (.*) web/$1 [L]
</IfModule>

Ответы [ 4 ]

1 голос
/ 13 октября 2010

Мне нравится это в корне:

RewriteEngine On
RewriteBase /
RewriteRule (.*) ./web/$1 [L]

И отредактируйте web / .htaccess, раскомментировав строку 'RewriteBase /'.

это делает все mysite.com/aaaa/bbbb работающими как mysite.com/web/aaaa/bbbb

0 голосов
/ 12 декабря 2010

Да, это возможно.Скопируйте все из Интернета / выше уровня в корневой каталог вашего документа.Отредактируйте index.php, чтобы отразить тот факт, что все, что он включает, теперь на один уровень ближе к его текущему каталогу, чем раньше (на один меньше ../)Вам не нужно редактировать еще один файл Symfony.

0 голосов
/ 24 мая 2010

Это похоже на мой вопрос Symfony на виртуальном хосте (проблема с корнем документа) .

Это мой .htaccess в корневом каталоге проекта:

RewriteEngine On
RewriteBase /       

RewriteCond %{REQUEST_URI} ^/images/  [OR]
RewriteCond %{REQUEST_URI} ^/js/      [OR]
RewriteCond %{REQUEST_URI} ^/css/
RewriteRule ^(.*)$ /web/$1 [L]

RewriteCond %{REQUEST_URI} !^/web/
RewriteRule ^(.*)$ /web/index.php [QSA,L]

Это решило мою проблему, но Symfony пытается сгенерировать каждый URL (например, используя url_for) из корня документа, поэтому вместо URL, подобного domain.com/my-article, генерируется domain.com/web/my-article.
Мне пришлось немного изменить свой класс PatternRouting, чтобы обрезать префикс /web от каждого URL. Я думаю, что это не лучшее решение, но оно работает.

Также, если я хочу получить доступ к бэкэнд-приложению, мне нужно всегда вызывать /web/backend.php/, потому что я не хочу иметь так много правил перезаписи в .htaccess.

Если вы хотите увидеть мой расширенный исходный код класса PatternRouting, я вставлю его сюда.

0 голосов
/ 23 мая 2010

Краткий ответ: нет.

Немного дольше: вам придется по крайней мере отредактировать конфигурацию apache, чтобы дать ему разрешение на доступ к каталогу web /, поэтому даже если вы сделаете символическую ссылку на вашу веб-папку на / var / www, она не будет работать.

...