2012-02-26 2 views
-1

Я хотел переместить содержимое .htaccess в vhost для производительности и пытаюсь решить проблему.Перемещение файла symfony2 htaccess в vhost

Это в .htaccess:

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

Я попытался это в ВХост:

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

Проблема состоит в том, что вторая перенаправляет /app_dev.php/ контроллер app.php и Шоуде нет, как в первом примере.

Любые советы приветствуются.

+0

Вы активировали переписывание с помощью «RewriteEngine on» в вашем Vhost? –

+0

@MartinRothenberger Да, я это сделал. В противном случае это не сработало бы вообще. – DavidW

ответ

0

От RewriteCond Directive Apache Docs:

REQUEST_FILENAME:

Полный локальный путь файловой системы в файл или сценарий сопоставления запроса, если это уже определяется сервером в момент REQUEST_FILENAME является ссылки. В противном случае, например, когда используется в контексте виртуального хоста, то же значение, что и REQUEST_URI.

Так что вы на самом деле тестирование на это не файл имеет путь /app_dev.php, который не является абсолютным путем, т.е. без DocumentRoot пути предварённое. Таким образом, вы должны сделать это:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 
RewriteRule^/app.php [L] 
  • ^(.*)$ нет необходимости в этом, как вы просто переписывание без учета URI.
  • Флаг QSA также не требуется, так как вы не манипулируете строкой запроса.
+0

Сценарий, с которым я работаю, требует, чтобы каждый запрос проходил через app.php, если он не является файлом. но он будет использовать app_dev.php, если такой файл присутствует. Я не знаю, как это происходит, но с файлом .htaccess, который я разместил выше, вот что происходит: domain.com/test/something запрашивает app.php и получает/test/something как строку запроса. /app_dev.php/test/something запросит app_dev.php и отправит/test/something в качестве строки запроса. По какой-то причине. Я не знаю, как это происходит с помощью только этого файла .htaccess. – DavidW

+0

то, что я пробовал (второй блок кода), и то, что вы написали, по какой-то причине делает то же самое, и /app_dev.php/ перенаправляется на /, и это моя проблема, с оригинальным .htaccess он этого не делает. – DavidW

+0

@Leo Какие другие правила у вас есть в htaccess? – ThinkingMonkey

Смежные вопросы