Я хочу создать надежную многопользовательскую среду разработки с apache2.
Я поместил следующий файл в etc/apache2/sites-available/mydomain.com
<virtualhost *:80>
ServerName mydomain.com
ServerAlias www.mydomain.com
DocumentRoot /var/www/mydomain.com/prod
</virtualhost>
<virtualhost *:80>
VirtualDocumentRoot /var/www/mydomain.com/%1
ServerName dev.mydomain.com
ServerAlias *.dev.mydomain.com
</virtualhost>
И следующие .htaccess
файл копируется в каждый /var/www/mydomain.com/*
каталог:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L,NS]
Наконец, он отлично работает для таких запросов, как http://mydomain.com/
, но не для http://mydomain.com/foo
.
Request exceeded the limit of 10 internal redirects due to probable configuration error.
Use 'LimitInternalRecursion' to increase the limit if necessary.
Use 'LogLevel debug' to get a backtrace.
[debug] core.c(3112): r->uri = /var/www/mydomain.com/foo/index.php
…
[debug] core.c(3118): redirected from r->uri = /var/www/mydomain.com/foo/index.php
[debug] core.c(3118): redirected from r->uri = /foo
Итак, как я могу это исправить и что не так?
Распространенное заблуждение состоит в том, что перезаписываемые записи принадлежат файлам .htaccess. Они этого не делают. Собственно ставить rewriterules - плохая идея.
У вас есть доступ к конфигурации вашего сервера. Вы должны поместить туда свои правила (если вы решите использовать любые ...)
Однако есть лучшее решение для «перенаправления всего, что не найдено, в index.php». И это для использования резервного ресурса:
http://httpd.apache.org/docs/2.2/mod/mod_dir.html#fallbackresource
<virtualhost *:80>
VirtualDocumentRoot /var/www/mydomain.com/%1
ServerName dev.mydomain.com
ServerAlias *.dev.mydomain.com
FallBackResource /index.php
</virtualhost>