Почему RewriteRule не работает, как я ожидал, согласно регулярному выражению? - PullRequest
0 голосов
/ 17 апреля 2019

Доброе утро, у меня настроен виртуальный хост на сервере Apache2.Модуль mod_rewrite активен и функционален.

Я протестировал регулярные выражения на сайте https://regex101.com/, и он ведет себя так, как я ожидал.

Я протестировал .htaccess файл на сайте https://htaccess.madewithlove.be/, и он работает правильно.

Я не понимаю, почему, когда я пробую его на сервере apache, он не работает.

Вот полный .htaccess файл

.htaccess

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(assets|locale)/(.*)$  user/$2/$3 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(/{0,1})user/([^/]+)(/?.*) user/$2.html [QSA,L]

Конфигурация виртуального хоста

Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted

Структура сайта

mywebsite.local
    user/
        - .htaccess
        - index.html
        - app.html

Протестированный URL

http://mywebsite.local/user/index/
http://mywebsite.local/user/app/
http://mywebsite.local/user/app/dashboard/
http://mywebsite.local/user/app/planningWeek/current/
http://mywebsite.local/user/app/task/taskId/day/month/year/

Что яожидается

http://mywebsite.local/user/index/
go to index.html (it works)

http://mywebsite.local/user/app/
go to app.html (it works)

http://mywebsite.local/user/app/dashboard/
it must go to app.html but I have this error
"The requested URL /user/app.html/dashboard was not found on this server."

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

Спасибо

1 Ответ

0 голосов
/ 17 апреля 2019

Кажется, что mod_rewrite просто заменяет app на app.html в вашем примере, таким образом генерируя /user/app.html/dashboard из /user/app/dashboard.

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

Может быть, переписать логи могут привести вас к ответу? Для получения дополнительной информации см. этот ответ Stackoverflow .

Надеюсь, это поможет, с уважением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...