Как переписать поддомен в 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>
- http://xy.user.phpfarm.lan/ перечисляет индекс /var/www, но он должен указывать индекс /home/xy/public_html, это неправильно
- http://xy.user.phpfarm.lan/testfile показывает содержимое /home/xy/public_html/testfile, это правильно!
Так что я думаю, что пустой REQUEST_URI записан неправильно. Но я не могу найти ошибку. Кто-нибудь знает, почему?
2 ответа
Попробуйте заменить последнюю строку на
RewriteRule ^/([^~]*) /~%1/$1 [PT,L]
Вы настаивали, по крайней мере, на одном символе после косой черты, поэтому случаи, когда REQUEST_URI
было /
были проигнорированы.
Да будет путь: ты должен измениться AllowOverride None
в AllowOverride All