Как удалить "web / app_dev.php" из URL-адресов Symfony2? - PullRequest
19 голосов
/ 12 марта 2012

Я только что создал свой первый проект Symfony2.Но часть "/web/app_dev.php" в URL раздражает меня.Должно быть возможно сделать это без Виртуальных хостов ...

Но когда я пробую это через .htaccess, я всегда получаю ошибки маршрутизации, и в URL всегда добавляется "web /"...

РЕДАКТИРОВАТЬ: весь проект также находится в подкаталоге с именем "symfonyTest".URL-адрес демонстрационной страницы: «http://localhost/symfonyTest/web/app_dev.php/demo/" и он должен стать» http://localhost/symfonyTest/demo/". Ссылки также должны иметь этот синтаксис.Возможно ли это?

Ответы [ 7 ]

21 голосов
/ 12 марта 2012

Symfony2 поставляется со встроенным режимом отладки, который вы используете при обращении к URL-адресам с добавлением app_dev.php. Режим отладки кешируется значительно меньше, чем рабочий режим, к которому можно обратиться, направив ваш браузер на URL, но пропустив app_dev.php. Если доступ к этому URL не работает, то это, вероятно, означает, что вам нужно очистить производственный кеш.

Чтобы очистить кеш, направьте свой терминал (командную консоль) в корневой каталог вашего проекта Symfony. Оттуда введите следующую команду:

php app/console cache:clear --env=prod --no-debug

В комментариях ниже в Symfony 3 это переместилось:

php bin/console cache:clear --env=prod --no-debug

Это должно очистить ваш производственный кеш и позволить вам обращаться к URL без app_dev.php.

Что касается веб-части URL. Самый простой способ удалить это - установить корневой каталог вашего проекта в веб-папку. Лучше всего делать это с помощью Apache, используя виртуальные хосты, но есть способы сделать это с помощью htaccess.

Эта ссылка объясняет, как использовать файл htaccess для изменения webroot. http://kb.siteground.com/how_to_change_my_document_root_folder_using_an_htaccess_file/

Надеюсь, это поможет!

11 голосов
/ 02 сентября 2012
<VirtualHost *:80>
    DocumentRoot "path_to_symfonyTest/web"  
    ServerName "symfonyTest"  
    <Directory "path_to_symfonyTest/web">
        DirectoryIndex app_dev.php
        AllowOverride All
        Order allow,deny
        Allow from all
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ app_dev.php [QSA,L]
        RedirectMatch permanent ^/app_dev\.php/(.*) /$1
    </Directory>
</VirtualHost>

Это часть моего httpd.conf

10 голосов
/ 04 июня 2013

Раньше у меня тоже была эта проблема, пожалуйста, посмотрите на мои конфигурации и попробуйте их

внутри моего .htaccess:

Привет всем, у меня тоже была эта проблема.И похоже, что «сток» .htaccess это проблема.Я решил это в своей среде, и вот мой .htaccess с примечаниями:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app_dev.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]    ##### this is the part that you     should tweak, have the .htaccess point the request to app_dev.php, since the routing.yml is empty initially
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]
    RewriteRule .? %{ENV:BASE}/app_dev.php [L]        ##### this is the part that you should tweak, have the .htaccess point the request to app_dev.php, since the routing.yml is empty initially
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        # When mod_rewrite is not available, we instruct a temporary redirect of
        # the startpage to the front controller explicitly so that the website
        # and the generated links can still be used.
        RedirectMatch 302 ^/$ /app.php/
        # RedirectTemp cannot be used instead
    </IfModule>
</IfModule>

внутри моей записи "symfony" в / etc / apache2 / sites-available:

<VirtualHost 127.0.1.15>
    ServerAdmin webmaster@localhost
    ServerName symfony
    DocumentRoot /var/www/Symfony/web
    DirectoryIndex app.php
    <Directory /var/www/Symfony/web>
        Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
5 голосов
/ 13 марта 2012

Если вы используете виртуальный хост Apache, вы можете заставить его работать так, как вы хотите. Вот пример виртуального хоста из моего xampp:

<VirtualHost *:80>
    ServerName myurl.local

    # Basic stuff
    DocumentRoot "C:/path/to/symfony/web"
    DirectoryIndex app.php
    <Directory "C:/path/to/symfony/web">
        AllowOverride All
        Allow from All
    </Directory>
</VirtualHost>

После перезапуска вашего apache вы можете получить доступ к проекту через http://myurl.local (не забудьте настроить файл hosts в C:\Windows\system32\drivers\etc\hosts!). Если вы хотите, чтобы среда разработки (app_dev.php) не отображалась в URL, измените DirectoryIndex на app_dev.php.

3 голосов
/ 20 ноября 2014
  1. // включить перезапись мода
    перезапись sudo a2enmod

  2. Изменить все вхождения AllowOverride Нет на AllowOverride All
    Файл: ( / etc / apache2 / apache2.conf ) или ( / etc / apache2 / sites-available / 000-default.conf ) - для меня работа с файлом /etc/apache2/apache2.conf.

Пример: * * один тысяча двадцать-одна

<Directory /var/www/web/>
        # enable the .htaccess rewrites
        Options Indexes FollowSymLinks
        #AllowOverride None #commented
        AllowOverride All
        Require all granted
</Directory>
  1. // Перезапуск службы apache:
    Служба sudo. Перезапуск apache2
2 голосов
/ 12 марта 2012

Вам понадобится файл .htaccess в родительской папке web, однако я бы не советовал делать это.Эта папка, кроме web, содержит полный исходный код, двоичные файлы, поставщиков и многое другое, поэтому вам нужно будет применить множество правил, чтобы разрешить веб-доступ к папке web и запретить веб-доступ ко всему остальному.

Итак, это выполнимо, но я бы определенно выбрал vhost solution ...

0 голосов
/ 01 октября 2015

вам просто нужно скопировать содержимое файла .htaccess в your-website.conf

внутри каталога TAG

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...