У меня есть установка 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. Попробуйте и так. По крайней мере, объясните, в чем ваша проблема, она немного пресная.