.htaccess не работает, хотя allowoverride включен - PullRequest
12 голосов
/ 19 августа 2011

Я использую CodeIgniter и только что установил стек LAMP на облачный сервер Ubuntu 10.10.

Все работает отлично, и у меня включен модуль userdir Apache, так что мой домашний каталог находится в /home/myapp/public_html, и я обращаюсь к нему, перейдя в servername/~myapp.

К сожалению, .htaccess перезапись, похоже, не работает - она ​​вызывает сообщение 404 the file /home/myapp/public_html/index.php не может быть найдено - ошибка 404.

Mod_rewrite включен.

Я знаю, что вам нужно установить директиву AllowOverride All - она ​​установлена ​​в /etc/apache2/sites-enabled/default - но перезапись, похоже, не работает должным образом.

Мой .htaccess файл просто содержит:

RewriteEngine on
RewriteCond $1 !^(index.php|img|stylesheets|js|icons|robots\.txt|user_guide)
RewriteRule ^(.*)$ index.php/$1 [L]

А мой /etc/apache2/sites-available/default выглядит так:

<VirtualHost *:80>
ServerAdmin dan@danmatthews.me

DocumentRoot /var/www
<Directory />
      Options FollowSymLinks
      AllowOverride ALL
</Directory>
<Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride ALL
      Order allow,deny
      allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
      AllowOverride All
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
      Order allow,deny
      Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

И, наконец, /etc/apache2/mods-enabled/userdir.conf выглядит так:

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride All
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                <Limit GET POST OPTIONS>
                        Order allow,deny
                        Allow from all
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Order deny,allow
                        Deny from all
                </LimitExcept>
        </Directory>
</IfModule>

Я часами гуглял и теребил, кто-нибудь может помочь, пожалуйста?

1 Ответ

19 голосов
/ 21 декабря 2011

Несмотря на это, у меня была очень похожая проблема с Ubuntu Server 11.10 и LAMP.Я должен был выполнить команду

sudo a2enmod rewrite

, которая сделала мой трюк.Может быть, это решение для вас или других людей, приходящих сюда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...