#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. Снова не работает, я даже переместил его в корневую папку с тем же результатом. Я попробовал это на другом сервере, и это сработало, так что я предполагаю, что это сервер…