.htaccess не перезаписывает URL-адрес

#php #.htaccess #mod-rewrite

#php #.htaccess #мод-перезапись

Вопрос:

У меня такая проблема: администратор сервера говорит, что у него включен rewrite_module для сервера apache, но когда я загружаю некоторые тестовые файлы на сервер для проверки этой функциональности, он не работает.

Я включил его на локальном хосте, и там он отлично работает.

содержимое .htaccess:

 Options  FollowSymlinks
RewriteEngine on 
RewriteRule ^games/(.*)$ games.php?id=$1 [L]
 

games.php содержание:

 <?php 
$var = $_GET['id'];
echo $var;
?>
 

URL-АДРЕСА:

 localhost url:http://localhost/testing/games/123123
production url:http://mysite.com/test2/games/123123 
 

test2 — это папка, содержащая файлы (.htaccess и games.php )
Что происходит в процессе производства, так это то, что когда я набираю это, я получаю страницу games.php но идентификатор не повторяется, и строка запроса пуста вместо того, чтобы получить идентификатор 123123, который я предоставил.Для локального хоста все работает нормально, и я получаю повторный идентификатор.
Может быть, администратор ошибается или что? Заранее благодарю.

Ответ №1:

Вы находитесь в подкаталогах и указываете движку переписать, когда запрос начинается именно с «games». Вы можете попробовать удалить каретку ^ или заменить ее косой чертой / … или добавьте это после включения RewriteEngine :

 RewriteBase /testing/
 

в производстве:

 RewriteBase /test2/
 

Или попытаться:

 RewriteEngine On
RewriteBase /test2/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^games/(.*)$ games.php?id=$1 [QSA,L]
 

Комментарии:

1. Кроме того, вы можете дважды проверить, установлен ли AllowOverride в All в файле конфигурации apache, чтобы .htaccess мог переопределять такие настройки, как mod_rewrite .

2. Это не работает. Я думаю, что htaccess вообще не вызывается. Потому что, когда я удаляю его и набираю: mysite.com/test2/games файл games.php вызывается вместо того, чтобы выдавать ошибку 404. Когда я набираю mysite.com/test2/games/213123 Я получаю тот же результат- games.php снова вызывается 🙁

3. есть ли какой-либо .htaccess в родительском каталоге? если это так, попробуйте удалить его

4. Снова не работает, я даже переместил его в корневую папку с тем же результатом. Я попробовал это на другом сервере, и это сработало, так что я предполагаю, что это сервер…