Если у вас нет разрешения на доступ к edit.php
, то не имеет значения, сколько разных способов вы пытаетесь его запросить: у вас нет разрешения.
Исправьте разрешения на сервере, вероятно, используя chmod
, если сервер работает в Linux.
Обновление
У вас проблема с конфигурацией сервера. Я могу воспроизвести проблему только при передаче строки ://
внутри строки запроса.
Попробуйте написать AllowEncodedSlashes On
в вашей конфигурации httpd согласно этому вопросу / ответу .
Затем вам необходимо убедиться, что вы правильно закодировали свой URI:
http://somehost.net/edit.php?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv=EgHY53dOZ-U
(похоже, ваш encodeURI
вызов должен позаботиться об этой части)
AllowEncodedSlashes
позволяет слешам присутствовать в строке запроса до тех пор, пока они кодируются, что по какой-то причине не по умолчанию. В документах говорится, что ошибка дает 404, а не 403, но я все еще думаю, что это причина.
Если вы не можете управлять параметрами конфигурации для своего веб-сервера, обходные пути включают в себя:
- Выбор заменяющего термина для
http://
, например http!!!
, который вы будете программно возвращать в сценарии PHP;
- Если вы всегда используете
http://
(в отличие от, скажем, ftp://
или некоторого локального пути), просто полностью оставьте его вне строки запроса и добавьте его перед входом в ваш PHP-скрипт (предпочтительный обходной путь) .
Надеюсь, это поможет.