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, или это даже проблема?
PS Следует упомянуть, что мои файлы поступают в эту папку через перехват Git после получения после того, как они были отправлены в хранилище в другом месте на сервере. Я не думаю, что это имеет значение, потому что каждый файл, кажется, прибывает, но я упомяну это.
1 ответ
Вы не хотите устанавливать страницу INDEX на страницу 404, иначе она не будет загружаться. Просто. Попробуй это:
Если вы хотите иметь перенаправление www, создайте 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". Попробуйте тоже так. По крайней мере, объясните, в чем ваша проблема, это немного мягко.