Как мне сопоставить разные имена серверов с разными DirectoryIndex в PHP Symfony? - PullRequest
1 голос
/ 06 февраля 2010

Symfony использует следующий типичный .htaccess файл:

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

и у меня есть это как мой vhost:

<VirtualHost 127.0.0.1:80>
    ServerName jobeet.loc
    DocumentRoot "C:/wamp/www/jobeet/web"
    DirectoryIndex index.php
<Directory "C:/wamp/www/jobeet/web">
    AllowOverride All
    Allow from All
</Directory>

Alias /sf "C:/wamp/lib/symfony-1.4.1/data/web/sf"
<Directory "C:/wamp/lib/symfony-1.4.1/data/web/sf">
    AllowOverride All
    Allow from All
</Directory>

Вышеописанное работает отлично, но я хочу знать, как отобразить и дополнительный URL-адрес для отладки, http://jobeet.dev, чтобы автоматически обслуживать файл frontend_dev.php, чтобы я мог использовать такие URL, как:
http://jobeet.dev/jobs/...
вместо
http://jobeet.dev/frontend_dev.php/jobs/... сопоставить с файлом отладки .php в платформе.

Я попытался добавить дубликат записи vhost и просто изменил имя сервера и каталог-индекса на
ServerName jobeet.dev
DirectoryIndex frontend_dev.php
но понятно, что это не работает, так как я считаю, что мне нужно проверить URL в .htaccess, чтобы сделать это?

Может кто-нибудь дать совет по этому поводу?

Заранее спасибо! :)

Ответы [ 2 ]

2 голосов
/ 08 февраля 2010

Сначала добавьте jobeet.dev в качестве ServerAlias ​​в ваш текущий VirtualHost, чтобы он мог использовать ту же конфигурацию хостинга:

<VirtualHost 127.0.0.1:80>
    ServerName jobeet.loc
    ServerAlias jobeet.dev
    DocumentRoot "C:/wamp/www/jobeet/web"
    ....

Не забудьте перезапустить Apache, когда закончите.

Далее, включите no_script_name в вашей конфигурации dev в apps/frontend/config/settings.yml:

dev:
  .settings:
    no_script_name: true

Теперь ваш веб-контроллер dev (frontend_dev.php) не будет отображаться в ваших автоматически сгенерированных URL (из link_to (), url_for () и т. д.)

Наконец, настройте RewriteRule для вашего домена dev до того, как ваш производственный контроллер войдет в игру, чтобы направить все входящие в jobeet.dev на ваш веб-контроллер dev:

  RewriteEngine on
  ...
  ...
  RewriteCond %{HOST_NAME} ^jobeet\.dev$
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ frontend_dev.php [QSA,L]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php [QSA,L]

Это должно сделать это.

0 голосов
/ 07 февраля 2010

Я бы порекомендовал вам сопоставить все необходимые хосты (jobeet.loc, jobeet.dev и т. Д.) С SF_DIR/web, установить index.php как dir-index (как вы это сделали), и в этом файле просто запустить определенное приложение. с конкретным env в зависимости от $_SERVER['HTTP_HOST'].

Надеюсь, я описал хорошо, чтобы прояснить идею.

...