Я хотел бы настроить свой apache2.4.7 на внутреннее перенаправление запросов следующим образом:
/app/download/somefile => /app/download.php/somefile
или что-то подобное. После различных попыток, которые все не работают, я пришел к очень простой замене, которая также просто отказывается работать. Я добавил 2 строки в /etc/apache2/apache2.conf:
RewriteEngine on
RewriteRule "^/app/testtest\.php" "/app/index.php"
Не сработало. Затем я добавил то же самое в каталог:
<Directory /var/www/html/app>
AllowOverride All
RewriteEngine on
RewriteRule "^/app/testtest\.php" "/app/index.php"
</Directory>
То же самое, только без эффекта. Я также пробовал это правило внутри файла .htaccess, также безрезультатно. /app/index.php существует, я уверен, что редактирую правильную конфигурацию (добавлены синтаксические ошибки, затем сервер не запускается при перезапуске), и у меня заканчиваются идеи. Я не забыл включить модуль перезаписи, я выполнил
a2enmod rewrite
Любая помощь приветствуется.
===================== ===== ОБНОВЛЕНИЕ ============================
Хорошо, я заставил перезаписать часть работы, добавив в sites-enabled / 000-default.conf
RewriteEngine On
RewriteRule "^/app/(.+)" "/app/$1.php"
Не знаю, почему он не работает в любом другом месте, но, ладно, лучше, чем ничего. Теперь я могу получить доступ к / app / index, но не к /app/index.php, который будет перезаписан на /app/index.php.php, которого не существует. Поэтому я добавил условие
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule "^/app/(.+)" "/app/$1.php"
, которое я читал на нескольких форумах и в документации, что это способ сделать это. Но опять же совсем не работает . Он не работает ни для файлов php (по-прежнему не может получить к ним доступ с расширением .php), ни для файлов изображений. Вот выдержка из журналов:
script '/var/www/html/app/icons/bin_closed.png.php' not found or unable to stat
Почему мои условия игнорируются? спасибо за подсказку.
Нашел. В этом случае RewriteCond нужен полный путь к файлу. Все работает гладко, когда я настраиваю его следующим образом:
RewriteEngine On
RewriteCond /var/www/html/%{REQUEST_FILENAME} !-f
RewriteCond /var/www/html/%{REQUEST_FILENAME} !-d
RewriteRule "^/app/(.+)" "/app/$1.php"
Я скопировал материал из примеров, который почему-то работает не так, как мой сценарий ...