У меня есть настройки ниже;очень простая настройка перезаписи URL с настройкой теста
// ----- test.php -----
<?php
phpinfo();
// ----- test.php -----
Конфигурация для test.local выглядит следующим образом.
<VirtualHost *:80>
ServerName test
ServerAlias test.*
DocumentRoot /var/www/test
</VirtualHost>
<Directory "/var/www/test/">
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* test.php/$0 [R,NE]
</Directory>
Теперь, если я сделаю запрос GET http://test.local/my-path-info
по умолчанию phpinfo()
страница отображается, как и ожидалось, если я добавлю косую черту в информацию о пути, это тоже работает.Но если я добавлю закодированную косую черту %2F
в URL (пример GET http://test.local/my-path-info%2fsomething-else
), она будет выглядеть как 404 Not found
.По сути, он не доходит до php-файла.
Есть идеи, почему это происходит и как обойти это?
Настройка на Apache 2.2.13, PHP 5.3.8в Linux (Centos 5.x).
ПРИМЕЧАНИЕ. Здесь я пытаюсь добавить косую черту в один из компонентов path-info, чтобы он не интерпретировался маршрутизатором.логика в рамках MVC.Без его кодирования маршрутизатор не может различить косую черту, которая является разделителем пути, и косую черту, которая является частью компонента пути.