Когда я приезжаю www.mysite.com все хорошо. Когда я приезжаю mysite.com (без www) меня перенаправляют на http://www.mysite.com/home/admin/domains/mysite.com/public_html что дает ошибку 404.
/home/admin/domains/mysite.com/public_html - это мой DocumentRoot
Я считаю, что эта проблема возникает без перезаписи ... но я могу ошибаться. Я думаю, это что-то с моей конфигурацией Apache. Надеюсь, кто-нибудь заметит частую ошибку.
Моя настройка VirtualHost была создана DirectAdmin и выглядит следующим образом:
<VirtualHost 192.154.96.50:80 >
ServerName www.mysite.com
ServerAlias www.mysite.com mysite.com
ServerAdmin webmaster@mysite.com
DocumentRoot /home/admin/domains/mysite.com/public_html
ScriptAlias /cgi-bin/ /home/admin/domains/mysite.com/public_html/cgi-bin/
UseCanonicalName OFF
<IfModule !mod_ruid2.c>
SuexecUserGroup admin admin
</IfModule>
CustomLog /var/log/httpd/domains/mysite.com.bytes bytes
CustomLog /var/log/httpd/domains/mysite.com.log combined
ErrorLog /var/log/httpd/domains/mysite.com.error.log
<Directory /home/admin/domains/mysite.com/public_html>
php_admin_flag safe_mode OFF
php_admin_flag engine ON
php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f admin@mysite.com'
php_admin_value mail.log /home/admin/.php/php-mail.log
php_admin_value open_basedir /home/admin/:/tmp:/var/tmp:/usr/local/lib/php/
</Directory>
Есть аналогичный VirtualHost для 443 (SSL).
Ниже мой журнал перезаписи, и DocumentRoot, кажется, уже был добавлен. Первое правило перезаписи - это правило htaccess в третьей строке.
[19 февраля 2014 г .: 09: 45: 44 --0800] [www.mysite.com/sid#9ffeb8 visible[rid#d06080/initial] (3) [perdir /home/admin/domains/mysite.com/ public_html /] добавить постфикс с информацией о пути: /home/admin/domains/mysite.com/public_html/home -> /home/admin/domains/mysite.com/public_html/home/admin/domains/mysite.com/public_html/
[19 февраля 2014 г .: 09: 45: 44 --0800] [www.mysite.com/sid#9ffeb8 visible[rid#d06080/initial] (3) [perdir /home/admin/domains/mysite.com/ public_html /] удалить префикс для каждого каталога: /home/admin/domains/mysite.com/public_html/home/admin/domains/mysite.com/public_html/ -> home / admin / domains / mysite.com / public_html /
[19 февраля 2014 г .: 09: 45: 44 --0800] [www.mysite.com/sid#9ffeb8 visible[rid#d06080/initial] (3) [perdir /home/admin/domains/mysite.com/ public_html /] применение шаблона '^ \. htaccess $' к uri 'home / admin / domains / mysite.com / public_html /'
У меня для AllowOverrides установлено значение None. Итак, файлы htaccess не используются. Я включаю все, что обычно находится в файлах htaccess, вот так: Include /home/admin/webfiles/bightaccess.conf
bightaccess.conf отсутствует в каталоге DocumentRoot или подкаталоге.
Вот директивы перезаписи в bightaccess.conf
<Directory ~ "/home/admin/domains/mysite.com/(private|public)_html">
Options +FollowSymLinks -Indexes -MultiViews
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# Deny access from .htaccess
RewriteRule ^\.htaccess$ - [F]
ServerSignature off
# ensure https is used for certain pages
RewriteCond %{HTTPS} off
RewriteCond %{QUERY_STRING} main_page=(login|login_vendor|password_forgotten|create_account|account|order|address_book|gv_|contact|download^s|report|submit_product|time_out|time_out_vendor|coupon_lookup)
RewriteRule ^/?(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# ensure https is used for certain pages
# used when Simple SEO URL aliases are used
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} login|login_vendor|password_forgotten|create-account|account|order|address_book|gv_|contact|download^s|report|submit-product|time_out|time_out_vendor|coupon_lookup
RewriteRule ^/?(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# add www to top level domain
# got this from rewrite manual
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} !^www\.mysite\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/?(.*) http://www.mysite.com/$1 [L,R,NE]
# add www to top level domain
RewriteCond %{SERVER_PORT} 443
RewriteCond %{HTTP_HOST} !^www\.mysite\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/?(.*) https://www.mysite.com/$1 [L,R,NE]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^/?(.+) index.php/$1 [E=VAR1:$1,QSA,PT,L]
</Directory>
Это может быть что-то простое, но меня это сводит с ума. Надеюсь, кто-то видел это раньше. Я могу предоставить любую дополнительную информацию!
Спасибо!
P.S. Я уже смотрел похожие посты: mod_rewrite добавление корня документа к url
но без кубиков. Мое заявление уже указывает на DocumentRoot.
Исправлена!
Я решил не использовать перезапись для моих перенаправлений без www на www. Вместо этого я добавил VirtualHosts, как предложил Майкл (спасибо).
Все еще не уверен, зачем был добавлен DocumentRoot.
(в ответе использован поддельный IP-адрес сайта)
<VirtualHost 192.168.0.100:80>
ServerName mydomain.com
Redirect / http://www.mydomain.com
</VirtualHost>
<VirtualHost 192.168.0.100:443>
ServerName mydomain.com
Redirect / https://www.mydomain.com
</VirtualHost>