Apache 2.4 mod_rewrite возвращает 404 для каждого RewriteRule

Я устанавливаю Apache 2.4.35 на сервере FreebBSD 11.2-RELEASE-p5, я включил на нем модуль mod_rewrite, но ни одно из правил перезаписи не работает, и я потратил пару дней на поиск ответов, но не могу заставить его работать.

Вот что я получаю от запуска httpd -M на сервере:

Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 mpm_prefork_module (shared)
 authn_file_module (shared)
 authn_core_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_core_module (shared)
 auth_basic_module (shared)
 reqtimeout_module (shared)
 filter_module (shared)
 mime_module (shared)
 log_config_module (shared)
 env_module (shared)
 headers_module (shared)
 setenvif_module (shared)
 version_module (shared)
 unixd_module (shared)
 status_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)
 rewrite_module (shared)
 php7_module (shared)

Это конфигурация Apache для моего виртуального хоста:

<VirtualHost *:80>
        ServerAdmin [email protected]
        DocumentRoot /usr/local/www/htdocs/myweb
        ServerName myweb.mywebsite.com

        <Location />
                SetEnvIfNoCase Request_URI  \
                        \.(?:gif|jpe?g|png)$ no-gzip dont-vary
                SetEnvIfNoCase Request_URI  \
                        \.(?:exe|t?gz|zip|gz2|sit|rar)$ no-gzip dont-vary
        </Location>
</VirtualHost>

###################################################################################

<Directory "/usr/local/www/htdocs/myweb">
        Options All MultiViews
        AllowOverride All
        Require all granted
        LogLevel debug rewrite:trace8
        DirectoryIndex index.html index.php
</Directory>

И это первые строки файла .htaccess, расположенного в папке / usr / local / www / htdocs / myweb.

RewriteEngine on
RewriteBase /

#Login
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^users/login(/?)$ /users/login.php [L]

Я перезапускал Apache миллионы раз, в журнале ошибок ничего не регистрируется, и каждое правило, которое я пытаюсь, всегда возвращает ошибку 404, и я не знаю, что еще делать, я не уверен, есть ли еще один модуль, который мне нужно включить, или что еще я нужно сделать.

Заранее большое спасибо!

ОБНОВИТЬ

По просьбе @KasperAgg вот дополнительная информация

Запрос:

POST http://myweb.mywebsite.com/users/login

Журнал ошибок:

[Sun Dec 16 14:29:40.349713 2018] [core:info] [pid 12094] [client 10.0.0.71:20255] AH00128: File does not exist: /usr/local/www/htdocs/myweb/users/login

Журнал доступа:

[16/Dec/2018:14:29:40 -0800] "POST /users/login HTTP/1.1" 404 209

/ usr / local / www / htdocs / myweb / users / папка:

-rw-r--r--  1 www  wheel   909 Dec 12 21:59 delete.php
-rw-r--r--  1 www  wheel   928 Dec 12 21:59 get.php
-rw-r--r--  1 www  wheel   892 Dec 12 21:59 getById.php
-rw-r--r--  1 www  wheel  1111 Dec 12 21:59 login.php
-rw-r--r--  1 www  wheel   742 Dec 12 21:59 logout.php
-rw-r--r--  1 www  wheel  2262 Dec 12 21:59 save.php

Что мне кажется странным, так это то, что сервер ведет себя так, как будто mod_rewrite не включен, и ищет папку пользователи / логин вместо того, чтобы переписывать URL-адрес в скрипт пользователи / login.php

Что содержит (...) / myweb?

Kasper Agg 16.12.2018 01:58

Наряду с файлами .htaccess есть папки, содержащие сценарии PHP, это RESTful API, и mod_rewrite необходим для перезаписи дружественного URL-адреса в сценарий PHP, необходимый для обработки запроса.

JackTorranceCR 16.12.2018 04:07

Какой URL, например, не работает и работает ли он без перезаписи? Афайк, детектив Директории, должен быть частью виртуального хоста ...

Kasper Agg 16.12.2018 08:50

Все переписывания терпят неудачу, ни один из них не работает, тот, который я перечислил, терпит неудачу, это то, о чем вы спрашиваете, или я неправильно понимаю ваш вопрос?

JackTorranceCR 16.12.2018 21:03

Я вижу одну перезапись (с условием), но если фактического «места назначения» не существует (index.php), вы, скорее всего, получите 404. Не могли бы вы показать пример URL-адреса, который вы пытаетесь, журнал 404 ( журнал ошибок / доступа apache) и фактическое содержимое каталога?

Kasper Agg 16.12.2018 21:07

Только что обновил свой вопрос, чтобы добавить запрошенную информацию @KasperAgg

JackTorranceCR 16.12.2018 21:53

Вы пытались разместить директиву Directory внутри VirtualHost? У меня такое ощущение, что AllowOverride действительно не применяется ...

Kasper Agg 16.12.2018 22:00

Просто сделал и никаких изменений, такое же поведение

JackTorranceCR 16.12.2018 22:23

/ usr / local / www / htdocs / csiapi не равно / usr / local / www / htdocs / myweb, может ли это быть?

Kasper Agg 16.12.2018 22:43

Я не хотел раскрывать свои исходные имена папок и забыл изменить их там, моя беда, извините за это

JackTorranceCR 16.12.2018 23:31

Не беспокойтесь, просто отвлекающий маневр. И еще кое-что: не могли бы вы попробовать правило с косой чертой? Нравится ^/users/...

Kasper Agg 16.12.2018 23:39

Просто изменил правило на RewriteRule ^ / users / login (/?) $ /Users/login.php [L], и оно снова ведет себя так же

JackTorranceCR 17.12.2018 00:05

Черт, у меня заканчиваются идеи ...

Kasper Agg 17.12.2018 00:08

И последнее: не могли бы вы попробовать отключить mod_dir и посмотреть, что произойдет?

Kasper Agg 17.12.2018 00:16

Только что сделал, и я получаю сообщение об ошибке из-за оператора DirectoryIndex в директиве Directory

JackTorranceCR 17.12.2018 00:48

Попробуйте закомментировать эту строку.

Kasper Agg 17.12.2018 00:52

То же самое, все еще есть 404

JackTorranceCR 17.12.2018 02:54
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
17
299
1

Ответы 1

Мне удалось исправить проблему, оказалось, что с директивой

RewriteEngine Off

В конце моего файла .htaccess нарушалась функция перезаписи, что странно, так это то, что эта конфигурация была скопирована с другого сервера, который был в основном клоном этого, и я никогда не испытывал никаких ошибок из-за этого, но теперь он работает и это может помочь другому человеку

Другие вопросы по теме