У меня есть сайт с 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 тоже.https://example.com/play/xyz и https://example.com/users/anyaction перестали работать. Под этим я подразумеваю, что страница загружалась нормально, сайт был там, но никакие значения $_GET не передавались PHP-скрипту. Таким образом, я не могу получить значение параметров gn и action. (см. код выше)var_dump для массива $_GET в сценариях, и они вернули пустой массив, что означает, что в сценарий не были отправлены никакие значения.Пожалуйста, проверьте мой код .htaccess. Я полностью и совершенно новичок в .htaccess, и приведенный выше код просто скопирован. Буду очень признателен за любую помощь в этом вопросе.






Пусть это будет так:
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.