Назад | Перейти на главную страницу

Apache2 не отображает один каталог, что приводит к сбою правил .htaccess. В чем дело?

У меня есть установка CodeIgniter в VirtualHost на Apache2 на Ubunto Natty, настроенная следующим образом:

/application
/system
...
/www/index.php

Вот мой .htaccess, который находится в /:

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /

        RewriteCond %{REQUEST_URI} ^system.*
        RewriteRule ^(.*)$ /www/index.php?/$1 [L]

        RewriteCond %{REQUEST_URI} ^application.*
        RewriteRule ^(.*)$ /www/index.php?/$1 [L]

        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /www/index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
        ErrorDocument 404 /www/index.php
</IfModule>

Когда я перехожу на сайт, я вижу прикрепленную картинку:

Вот что я вижу, когда бегу ls -al в /:

total 44
drwxr-xr-x  8 admin admin 4096 2011-09-06 00:35 .
drwxr-xr-x  3 admin admin 4096 2011-09-04 06:36 ..
drwxr-xr-x 12 admin admin 4096 2011-09-04 06:29 application
-rw-r--r--  1 admin admin   94 2011-09-05 18:53 .hg_archival.txt
-rw-r--r--  1 admin admin  431 2011-09-06 00:35 .htaccess
-rw-r--r--  1 admin admin 2496 2011-09-05 18:53 license.txt
drwxr-xr-x  2 admin admin 4096 2011-09-06 00:32 logs
drwxr-xr-x 10 admin admin 4096 2011-09-04 06:29 system
drwxr-xr-x  2 admin admin 4096 2011-09-06 00:30 test
drwxr-xr-x 11 admin admin 4096 2011-09-04 06:29 user_guide
drwxr-xr-x  5 admin admin 4096 2011-09-04 06:29 www

Что мне нужно изменить, чтобы появилась моя папка www, что позволило моему ReWriteRule работать, или это вообще проблема?

P.S. Следует упомянуть, что мои файлы поступают в эту папку через Git-перехватчик post-receive после того, как они были помещены в репозиторий в другом месте на сервере. Я не думаю, что это имеет значение, потому что кажется, что каждый файл прибывает, но я упомяну об этом.

Вы не хотите устанавливать страницу INDEX на страницу 404, иначе она не загрузится. Просто. Попробуй это:

Если вы хотите использовать www-redirect, создайте v-host только с вашим внешним IP.

#vHosts Config:

NameVirtualHost *:80

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^\.]+\.[^\.]+)$
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
<Directory "C:/xampp/htroot">
    AllowOverride All
    Options Indexes FollowSymLinks Includes ExecCGI
    Order allow,deny
    Allow from all
</Directory>

в противном случае поместите это в файл .htaccess в корневой каталог сайта.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^\.]+\.[^\.]+)$
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

и УБЕДИТЕСЬ, что вы разрешаете индексы и директивы опций goody-two-shoes. Это должно вас исправить.

РЕДАКТИРОВАТЬ: вы можете в значительной степени удалить теги ifmodule. Попробуйте и так. По крайней мере, объясните, в чем ваша проблема, она немного пресная.