symfony2 переписать правила .htaccess app.php

43

Я загрузил проект symfony2 в серверную рощу. Основная страница загружается, но все ссылки не работают. Я попытался добавить app.php к веб-адресу. Он действительно работал, но:

У меня есть маршруты вроде этого:

www.something.com/app.php/something

Я хочу, чтобы они были:

www.something.com/something.

Я читал, и я должен поместить некоторые правила перезаписи на .htaccess.

Я нашел эти правила, но они, похоже, не работают:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
  • 0
    Франциско Очоа, посмотри файл журнала. Приложение / журналы /, где вы можете найти ошибку.
  • 0
    mod_rewrite действительно включен?
Показать ещё 3 комментария
Теги:
.htaccess
mod-rewrite

5 ответов

57
Лучший ответ

Попробуйте это в файле .htaccess(внутри веб-каталога):

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On

    # Explicitly disable rewriting for front controllers
    RewriteRule ^app_dev.php - [L]
    RewriteRule ^app.php - [L]

    RewriteCond %{REQUEST_FILENAME} !-f

    # Change below before deploying to production
    #RewriteRule ^(.*)$ /app.php [QSA,L]
    RewriteRule ^(.*)$ /app_dev.php [QSA,L]
</IfModule>
  • 0
    Я добавил его, но когда я зашел на www.something.com, там написано, что произошла ошибка ...
  • 0
    Вы удалили все остальное в файле?
Показать ещё 3 комментария
20

Чтобы улучшить ответ на whistlergreg, я добавил строку, чтобы папка пакетов не была нарушена. Это гарантирует, что внешние ресурсы, такие как изображения, не будут нарушены.

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On

    # Explicitly disable rewriting for front controllers
    RewriteRule ^/web/app_dev.php - [L]
    RewriteRule ^/web/app.php - [L]

    # Fix the bundles folder
    RewriteRule ^bundles/(.*)$ /web/bundles/$1  [QSA,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    # Change below before deploying to production
    #RewriteRule ^(.*)$ /web/app.php [QSA,L]
    RewriteRule ^(.*)$ /web/app_dev.php [QSA,L]
</IfModule>
3

У вас нет возможности переписать модуль. Этот код выполняется, если mod_rewrite.c включен. Вы должны включить mod_rewrite только в apache2. http://www.unixmen.com/how-to-enable-and-disable-apache-modules/

Например, в Ubuntu:

sudo a2enmod rewrite
sudo service apache2 restart
0

Вы можете попробовать предоставить полный путь к вашим активам (полный URL-адрес). У меня была такая же проблема, когда я развернул свое первое приложение Symfony

Мой корневой каталог (папка public_html в большинстве случаев). Файл htaccess выглядит так:

Options +FollowSymLinks +ExecCGI

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteRule !^projectName/ /projectName/web/app.php/%{REQUEST_URI} [L,NC]
0

Кроме того,... не забудьте раскомментировать (если прокомментировать) конфигурацию apache:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

MacOSX

/private/etc/apache2/httpd.conf

Ещё вопросы

Сообщество Overcoder
Наверх
Меню