Общая конфигурация массивного виртуального хоста вызывает код состояния 404 при каждом запросе виртуального хоста

ls -sa | awk '{ SUM += $1 } END { print "Block size=" SUM }'

параметр -s в ls печатает выделенный размер каждого файла в блоках

И реальный размер:

ls -la | awk '{ SUM += $5 } END { print "Dir size=" SUM }'
2
03.05.2017, 10:29
2 ответа

Попробуйте

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/vhosts/example.com/httpdocs
    ServerAlias *.example.com
    VirtualDocumentRoot /var/www/vhosts/example.com/%0
</VirtualHost>

Это явно не включает всю конфигурацию, но должно заставить работать ваши поддомены с подстановочными знаками.

Затем я бы перенаправлял все запросы с www.example.com на example.com . Самый простой способ сделать это, вероятно, - использовать файл htaccess внутри /var/www/vhosts/example.com/www.example.com

В качестве альтернативы, если у вас есть символические ссылки, вы можете использовать символическую ссылку / var / www / vhosts / example.com / www.example.com на /var/www/vhosts/example.com/httpdocs

Изменить:

Вы можете поместить перенаправление в vhost конфигурацию, если вы не хотите делать это в .htaccess . Попробуйте следующее:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/vhosts/example.com/httpdocs
    ServerAlias *.example.com
    VirtualDocumentRoot /var/www/vhosts/example.com/%0
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.example.com
    RewriteRule ^/(.*)$ http://example.com/$1 [L,R=301]
</VirtualHost>

Я не знаю, как это сделать без какого-либо перенаправления. Кстати, хорошей практикой является перенаправление без www на www или с www на не с www. Наличие того, что по сути является дубликатом вашего сайта, будет неприятностью, если вы планируете заниматься какой-либо работой по SEO.

1
27.01.2020, 22:18

Я написал скрипт для себя - он работает для меня :)

Но прежде чем читать мой скрипт - мой вам совет: не используйте

<VirtualHost example.com>
....
</VirtualHost>

вместо этого используйте: или , чтобы начать запись VirtualHost.

Примечание: я работаю в основном на AIX, поэтому в качестве оболочки у меня ksh. Это также должно работать с /bin/sh или /bin/bash.

Syntax:
vhost.ksh <ServrName> [ServerAlias1] [... ServerAliasN]

#!/usr/bin/ksh
# Copyright AIXTOOLS.NET, 2014
# This script creates a vhost template
# under the assumption that the site might be served by multiple hosts
# the logs are put into a sub-directory
# ${SITEroot}/logs/LOGNAME.$host
site=$1
shift
alias=$*
HOST=`hostname -s`
SITE=/var/httpd/${site}
LOGDIR=${SITE}/logs

cat -<<EOF1
# AIXTOOLS.NET vhost.ksh output
# VirtualHost template for ${site}
# SITEBASE=${SITE}
# LOGDIR=${LOGDIR}

<VirtualHost *:80>
     ServerName  ${site}
EOF1
for name in ${alias}
do
print "    ServerAlias  ${name}"
done

cat - <<EOF2

DocumentRoot "${SITE}/htdocs"

<Directory "/var/httpd/${site}/htdocs">
    Options Indexes FollowSymLinks Includes
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

#Logs for ${site}
# combined is chosen as default to support awstats reporting
    CustomLog "${LOGDIR}/access_log.${HOST}" combined
#    ErrorLog "${LOGDIR}/error_log.${HOST}"
# You can consider using different "localN" syslogs to split different vhosts
# should you need that
    ErrorLog syslog:user
#    LogLevel alert rewrite:trace3
#    LogLevel alert
#    RewriteLog "/var/httpd/${site}/logs/rewrite.log"
#    RewriteLogLevel 0
</VirtualHost>
EOF2
0
27.01.2020, 22:18

Теги

Похожие вопросы