Как переписать поддомен в apache userdir

Как описано в этом блоге, я хочу переписать внутренне

http://xy.user.phpfarm.lan -> http://user.phpfarm.lan/~xy/

Модуль userdir включен.

В следующем файле конфигурации Apache2 vhost он содержит ошибку:

/ и т.д. /apache2/ сайты с поддержкой / phpfarm:

<Virtualhost *:80>
 ServerAdmin root@localhost
 ServerName em-sv-phpfarm.lan
 ServerAlias *.user.phpfarm.lan user.phpfarm.lan phpfarm.lan

 DocumentRoot /var/www/
 <Directory />
  Options FollowSymLinks
  AllowOverride None
 </Directory>
 <Directory /var/www>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
 </Directory>

 ErrorLog ${APACHE_LOG_DIR}/error.log

 # Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn

 CustomLog ${APACHE_LOG_DIR}/access.log combined

 RewriteLog "/tmp/rewrites"
 RewriteLogLevel 5
 # Uncomment the above two lines and watch /tmp for some debug info.

 RewriteEngine On

 # Make bob.user.phpfarm.em.lan be treated as user.phpfarm.lan/~bob
 RewriteCond %{HTTP_HOST} ([^.]+)\.user\.phpfarm\.lan$ [NC]
 # In the above line make sure you escape (preceed with a backslash) every period (.) in the address.
 RewriteCond %{REQUEST_URI} !^[^/]+/~.*$
 # exclude file handler
 RewriteCond %{REQUEST_URI} !^/php-fcgi/.*$
 RewriteRule ^/([^~]+) /~%1/$1 [PT,L]
</virtualhost>

Так что я думаю, что пустой REQUEST_URI записан неправильно. Но я не могу найти ошибку. Кто-нибудь знает, почему?

2 ответа

Попробуйте заменить последнюю строку на

 RewriteRule ^/([^~]*) /~%1/$1 [PT,L]

Вы настаивали, по крайней мере, на одном символе после косой черты, поэтому случаи, когда REQUEST_URI было / были проигнорированы.

Да будет путь: ты должен измениться AllowOverride None в AllowOverride All

Другие вопросы по тегам