Утро, я работаю над этой проблемой в течение нескольких дней и не могу ее решить.
Стек Http: nginx 1.0.4, apache 2.2.3, symfony 1.4.11
В моем веб-каталоге у меня есть символическая ссылка на мой внутренний контроллер, поэтому я могу использовать URL-адреса без расширения .php, например: mysite.com/be_dev.php = mysite.com/be_dev
После некоторого поиска в Googleзаметил, что существует множество способов сделать это, но подход, который я нашел наиболее элегантным, заключался в использовании apache с директивами ForceType.Без этой директивы, когда я использую символическую ссылку в URL, она просто отображает код php, но когда я помещаю директивы ForceType на место, она анализирует php, как и ожидалось.
Единственная проблема, с которой я столкнулся сейчасв том, что когда я перехожу по символической ссылке, она обрабатывает символическую ссылку как веб-корень.Таким образом, файл обслуживается из / be_dev / sf / sf_web_debug / images / * vs / sf / sf_web_debug / images / *.Если я пройду через be_dev.php, то все будет работать, как и ожидалось.
Я пробовал различные правила перезаписи, чтобы удалить / be_dev из пути, чтобы он обслуживался из /, как упоминалось выше, но не могу его зафиксироватьвниз.
Я публикую соответствующие фрагменты конфигурационных файлов.
Заранее спасибо.
/ usr / local / nginx / etc / nginx.conf
...
server {
...
location /sf/ {
root /home/websrc/projects/app/app1/current/framework/data/web;
}
...
}
...
/ etc / httpd / conf /vhost.d / 10_symfony.conf
<FilesMatch "^(fe|be)?(_dev)?$">
ForceType application/x-httpd-php
</FilesMatch>
/ etc / httpd / conf / vhost.d / 999_default.conf
Listen 3001
NameVirtualHost localhost:3001
<VirtualHost localhost:3001>
SetEnv SERVICECLASS dev
SetEnv SERVICEAPP app1
ServerName myhost.*.mydomain.lan
ServerAlias myhost.*.mydomain.com
ServerAdmin systems@mydomain.com
VirtualDocumentRoot /home/%2/projects/app/app1/current/code/web
<Directory "/home/*/projects/app/app1/current/code/web">
AllowOverride none
Options FollowSymLinks
RewriteEngine on
RewriteOptions inherit
#RewriteCond %{REQUEST_URI} ^/be_dev/.* [NC]
#RewriteRule ^/be_dev/(.*) /$1 [L,NC,PT]
#RewriteRule be_dev$ /$1 [L]
######
# Symfony rules
######
# uncomment the following line, if you are having trouble
# getting no_script_name to work
#RewriteBase /
# we skip all files with .something
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
RewriteRule /^(be_dev)$ /$1.php [L]
######
</Directory>
LogLevel debug
CustomLog /var/log/httpd/app1.dev.access.log combined
ErrorLog /var/log/httpd/app1.dev.error.log
RewriteLog /var/log/httpd/app1.dev.rewrite.log
RewriteLogLevel 9
</VirtualHost>
Обновление @ 6.13.2011 Все еще не повезло в выяснении этогоодин, любая помощь приветствуется.
Обновление @ 6.15.2011 Наконец-то получил!Опубликовано в моем блоге @ http://melikedev.com/2011/06/15/symfony-remove-php-from-controller-using-symlink/