Apache2 Невозможно заставить работать простое правило mod_rewrite

Я хотел бы настроить свой 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

Почему мои условия игнорируются? спасибо за подсказку.

0
задан 8 May 2018 в 11:02
1 ответ

Нашел. В этом случае RewriteCond нужен полный путь к файлу. Все работает гладко, когда я настраиваю его следующим образом:

RewriteEngine On                                     
RewriteCond /var/www/html/%{REQUEST_FILENAME} !-f 
RewriteCond /var/www/html/%{REQUEST_FILENAME} !-d 
RewriteRule "^/app/(.+)" "/app/$1.php"

Я скопировал материал из примеров, который почему-то работает не так, как мой сценарий ...

0
ответ дан 24 November 2019 в 02:42

Теги

Похожие вопросы