Не хочет работать стандартный роутинг на index.php. В чём причина?

94
04 октября 2021, 14:10

Есть папка web. В папке два файла: index.php в котором прописаны все последующие роутинги и .htaccess Содержимое .htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

При запросе "/web/" всё ок. Отображается index.php При запросе "/web/*" т.е. что угодно после web/ получаю 404 т.е. такое чувство будто .htaccess не хочет отрабатывать и перенаправлять на index.php.

Answer 1
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

В дополнению к ответу ниже - чтоб сделать корневой web:

  1. В корень сайта файл htaccess:

    RewriteRule ^(.+)?$ /web/$1
    
  2. В папку web файл htaccess:

    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php
    
Answer 2

Проблема была в кофниге апача.

  1. Проверяем включен ли mod_rewrite в апаче.
    apachectl -M (проверить есть ли в модулях rewrite_module)
    sudo a2enmod rewrite - включаем модуль 
    sudo systemctl restart apache2 - перезагружаем апач
  1. В файле /etc/apache2/apache.conf важна строка AllowOverride All, она должна быть в таком виде, как это описано ниже.
    <Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

После этого все запросы действительно стали лететь к index.php

Answer 3

Первым делом нужно проверить включен ли mod_rewrite и то что вы заходите при запросе /web/ на индекс означает что директива DocumentRoot в настройках виртуального хоста не верно настроена (Вам нужно добавить в конце этого пути web что бы попадать сразу внутрь папки).

Или же если так и задумано что бы на web не ссылался DocumentRoot то Вам нужно сделать ещё один htaccess на одну директорию выше, положить рядом с папкой web и написать что то такое :

RewriteRule ^$ web/     [L]
RewriteRule (.*) web/$1 [L]

Если Вы поправили DocumentRoot то нужно :

RewriteCond %{REQUEST_URI} !^/index\.php
RewriteRule .* index.php [L]
READ ALSO
Анимация фигур Android

Анимация фигур Android

Необходимо отобразить анимацию фигур, находящихся на View

98
java.lang.StringIndexOutOfBoundsException: String index out of range: -4

java.lang.StringIndexOutOfBoundsException: String index out of range: -4

Всем привет сложилась ситуация что получил я следующий exception:

325
SearchView в Android

SearchView в Android

Есть проблема, связанная с элементом SearchViewКогда я нажимаю на иконку лупы, то SearchView не сразу переходит в режим ввода текста

75