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

Удалите index.php из URL-адреса Apache 2.4

Я уже день пытаюсь удалить index.php из своего приложения. Я все перепробовал, но не могу удалить. Проблема в том, что мне нельзя иметь .htaccess файл в каталоге проекта, а конфигурация в файле .htaccess, который работает на моем локальном компьютере разработчика, там не работает.

Конфигурация на моем локальном компьютере:

<IfModule mod_rewrite.c>
    # Rules to serve URLs which point to files directly
    # ----------
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

Мне известно, что я не могу использовать директиву RewriteBase внутри файла конфигурации хоста (/etc/apache2/sites-available/000-default.conf/000-default.conf). Однако отключение этого тоже не работает.

Почему эта проблема такая сложная? Есть гораздо более сложные перенаправления, которые отлично работают, но, похоже, нет определенного решения для удаления index.php из URL!

РЕДАКТИРОВАТЬ: он установлен на машине Ubuntu 14.04.

Если вам необходимо избегать использования .htaccess, другой директивой, которую вы можете попробовать, если у вас возникли проблемы с mod_rewrite, является использование директивы ErrorDocument, например следующей:

ErrorDocument 404 /index.php

Если вы пойдете по этому пути, вам может потребоваться немного подправить код приложения - например, в верхней части файла index.php, вам может потребоваться установить $ _SERVER ['PATH_INFO'] на $ _SERVER ['REQUEST_URI']. Сравните содержимое $ _SERVER между разработчиками и производителями, чтобы лучше понять, не помогает ли это.

Если вы можете отредактировать файл conf, как вы отметили, и если использование .htaccess не является проблемой политики / безопасности, вы всегда можете включить .htaccess для сайта, используя директиву AllowOverride в файле conf.