Странная проблема в .htacess, возникающая после смены сервера

У меня есть сайт с 3 скриптами, а именно viewgames.php, play.php и users.php в корневом каталоге. У меня также есть файл .htaccess в том же (корневом) каталоге.

Мой код .htaccess, который очищает URL-адреса: -

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^search/(.*)$ ./viewgames.php?search=$1
RewriteRule ^category/(.*)$ ./viewgames.php?cat=$1
RewriteRule ^users/(.*)$ ./users.php?action=$1
RewriteRule ^play/(.*)$ ./play.php?gn=$1
RewriteRule ^([a-z]+)/?$ $1.php [NC]

ErrorDocument 404 /pagenotfound.php

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Когда я разрабатывал на локальном хосте (XAMPP), у меня не было проблем с доступом к чистым URL-адресам (используя приведенный выше код htaccess), таким как localhost/MySite/play/foo, localhost/MySite/category/action, localhost/MySite/search/lolol или localhost/MySite/users/myaccount.

Это явно означает, что приведенный выше код .htaccess отлично работал на моем локальном сервере. Затем я загрузил приведенный выше код на общий Linux-сервер на основе Apache и столкнулся с некоторыми проблемами странный -

  • https://example.com/category/blabla работал нормально, https://example.com/search/blabla тоже.
  • Но URL-адреса https://example.com/play/xyz и https://example.com/users/anyaction перестали работать. Под этим я подразумеваю, что страница загружалась нормально, сайт был там, но никакие значения $_GET не передавались PHP-скрипту. Таким образом, я не могу получить значение параметров gn и action. (см. код выше)
  • Я даже пытался использовать var_dump для массива $_GET в сценариях, и они вернули пустой массив, что означает, что в сценарий не были отправлены никакие значения.

Пожалуйста, проверьте мой код .htaccess. Я полностью и совершенно новичок в .htaccess, и приведенный выше код просто скопирован. Буду очень признателен за любую помощь в этом вопросе.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пусть это будет так:

ErrorDocument 404 /pagenotfound.php

Options -MultiViews
RewriteEngine on
RewriteBase /

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteRule ^search/(.*)$ viewgames.php?search=$1 [L,QSA,NC]
RewriteRule ^category/(.*)$ viewgames.php?cat=$1 [L,QSA,NC]
RewriteRule ^users/(.*)$ users.php?action=$1 [L,QSA,NC]
RewriteRule ^play/(.*)$ play.php?gn=$1 [L,QSA,NC]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([a-z]+)/?$ $1.php [L,NC]

Важно не отключать параметры MultiViews, чтобы функция согласования содержимого не вызывала проблем для модуля mod_rewrite.

Большое спасибо. Это именно тот ответ, который я искал. Именно благодаря таким людям, как вы, я так люблю StackOverflow.

Sayan J. Das 11.02.2019 17:21

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