Я мое приложение в подкаталоге в www.example.com/aplication/v1, и у меня есть домен третьего уровня для этого в v1.example.com. Я использую symfony2, и в моем .htacess у меня есть следующее:
DirectoryIndex app.php
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /app.php/
</IfModule>
</IfModule>
а это мой app.php
<?php
use Symfony\Component\HttpFoundation\Request;
require __DIR__.'/../app/autoload.php';
include_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../app/AppKernel.php';
$kernel = new AppKernel('prod', true);
$kernel->loadClassCache();
//$kernel = new AppCache($kernel);
// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter
//Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
Все работает хорошо в www.example.com/aplication/v1, но 500, если я попробую v1.example.com. Прошу поддержки моего хостинга и они говорят, что проблема в моем .htacess. Как это исправить?
update: Может быть, мне нужно обновить условие перезаписи в .htaccess?
Я также подозреваю, что, но как я могу установить, что перенаправление хорошо работает с обоими доменами?
просто используйте абсолютные пути
это не работает, я полагаю, потому что я использую symfony, и этот файл защищен (не вижу с полным путем).
У вас в журнале ошибок появляется ошибка? / вар / журнал / apache2 / ...
Я жду этого, я не могу использовать ssh на сервере. Но, может быть, мне нужно изменить rewriteCond в моем htaccess?
Нет ... это не относится к переписыванию Apache
условие перезаписи .htaccess? Поэтому я не вижу решения
в противном случае я добавляю весь свой htaccess в вопрос.
На что указывает v1.example.com? то же самое, что и example.com или в подкаталог v1?
На www.example.com/api/web
тот же htaccess на v1.example.com?
подождите, v1.example.com не существует, просто укажите www.example.com/api/web. Фактически, если я повторю «тест» в app.php до этого, я могу увидеть «тест» в обоих путях. Конечно, проблема в том, что требуется, но я думаю, что решение будет в .htacess
Я бы попытался использовать там абсолютные пути и посмотреть, что он делает
разрешение отклонено, я использую symfony и блокирую доступ к определенному файлу (конфигурации) с абсолютным путем
Я вижу, что после попытки не работает, не предполагаю






Я разрешаю это добавить еще раз перенаправление на третий уровень домена, например:
#redirect for service
RewriteCond %{HTTPS_HOST} ^v1\.example\.com
RewriteRule ^(.*)$ /application/v1/$1 [L]
Я не думал, что должен перенаправлять весь запрос под свой проект, а не только корень.
Я подозреваю, что это связано с требованием и включением ...