Apache 2.4 mod_rewrite возвращает 404 для каждого RewriteRule - PullRequest
0 голосов
/ 16 декабря 2018

Я устанавливаю 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 mail@domain.com
        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 / folder:

-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 не был включен, и вместо перезаписи ищет папку users / login URL-адрес users / login.php script

1 Ответ

0 голосов
/ 20 декабря 2018

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

RewriteEngine Off

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

...