Публикация этого в SE вместо ServerFault, поскольку он фокусируется на веб-разработке и содержит ссылки на Symfony.
У меня проблемы с созданием перезаписи .htaccess с настройкой Symfony по умолчанию. настройка htaccess. Мое намерение заключается в следующем:
- Внутренне переписать все запросы на
bla/something/*
до something/else
. something/else
не является допустимым файлом в Интернете root, а скорее URI, обрабатываемым приложением Symfony - , таким образом, поток запросов: сопоставить внутреннюю перезапись, повторно обработать правила с
something/else
(который затем переписывается - и обнаруживается приложением Symfony), таким образом обслуживая контроллер something/else
, пока в URL браузера все еще отображается bla/something/x
.
Я собрал следующее правило basi c, которое работает при использовании для перенаправлений 301:
RewriteRule ^bla/something/(.+)$ /something/else
, что приводит к полному .htaccess файл:
DirectoryIndex index.php
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
# RewriteRule ^(.*) - [E=BASE:%1]
# Sets the HTTP_AUTHORIZATION header removed by Apache
RewriteCond %{HTTP:Authorization} .
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# DirectoryIndex index.php
# RewriteCond %{ENV:REDIRECT_STATUS} ^$
# RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
RewriteRule ^bla/something/(.+)$ /something/else
# If the requested filename exists, simply serve it.
# We only want to let Apache serve files and not directories.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
# Rewrite all other queries to the front controller.
# RewriteRule ^ %{ENV:BASE}/index.php [L]
FallbackResource /index.php
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /index.php/
</IfModule>
</IfModule>
В идеале все, что я прокомментировал, должно быть включено и работать. Я только что попытался отогнать его до самого простого c файла. Что еще я пробовал:
Проблема, однако, в том, что запрос вообще не переписывается внутри. Браузер показывает /bla/something/x
, что также видит приложение Symfony для запрошенного пути.