.htaccess не работает на живом сайте, но работает на localhost? - PullRequest
0 голосов
/ 27 июля 2011

Я использую ExpressionEngine и хочу удалить index.php из моих URL.У меня этот файл .htaccess сохранен в корневой папке.Он отлично работает на локальном хосте, но когда я загружаю его на сервер, он не работает.В адресной строке отображается правильный URL, но страница остается на главной странице.Любые советы?

<IfModule mod_rewrite.c>
    # Enable Rewrite Engine
    # ------------------------------
    RewriteEngine On
    RewriteBase /
    # Redirect index.php Requests
    # ------------------------------
    RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC]
    RewriteCond %{THE_REQUEST} ^GET
    RewriteRule ^index\.php(.+) $1 [R=301,L]
    # Standard ExpressionEngine Rewrite
    # ------------------------------
    RewriteCond $1 !\.(css|js|gif|jpe?g|png) [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

1 Ответ

1 голос
/ 27 июля 2011

Убедитесь, что ваша директива AllowOverride в Apache настроена на разрешение .htaccess файлов, а на вашем сервере установлено и активно mod_rewrite.

В Mac OS X вы найдетеэтот файл на /etc/apache2/httpd.conf.Найдите директиву <Directory> и измените ее на:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
</Directory>

Вам нужно будет перезапустить Apache, чтобы он мог прочитать новую конфигурацию:

sudo /usr/sbin/apachectl restart

Если выпредпочитаете использовать графический интерфейс для перезапуска Apache, перейдите на Apple> Системные настройки> Общий доступ и установите флажок рядом с Веб-доступ .

Если выпри использовании Windows или любой другой версии Linux применяется тот же подход, но конфигурация Apache может быть в другом месте, особенно если вы используете WAMP или MAMP .


Также, для справки, "официально поддерживаемый метод" EllisLab для Удаление index.php из URL-адресов ExpressionEngine выглядит следующим образом:

<IfModule mod_rewrite.c>
    RewriteEngine On
    # Removes index.php
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]
    # If 404s, "No Input File" or every URL returns the same thing
    # make it /index.php?/$1 above (add the question mark)
</IfModule>
...