Привет всем, я действительно запутался в этой проблеме. Попробую описать это:
Проблема в: http://mydomain.com/somedir/somephp.php?arg1=value&arg2=http://otherdomain.com&arg3=http://othertoo.com/somepath/something... полностью не работает. С кодированием URL и без него.
Мой сайт читает все после mydomain.com/everything, кроме существующих файлов и каталогов. Я делаю это с помощью mod_rewrite:
Options -Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ handler.php
Пример запроса выше находится на handler.php. Если я закомментирую RewriteRule, будет ошибка apache:
Forbidden
You don't have permission to access /somedir/somephp.php on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Проведя много тестов и т. Д., Я понял, что проблема связана со строкой http: // или: // в аргументах URL. Но его URL-адрес закодирован: S
Этот материал должен быть системой аутентификации openId, и она не работает при обратной передаче, и я уверен, что URL-адрес в аргументе url вызывает эту ошибку.
Я никогда раньше не сталкивался с этой проблемой, хотя я делал то же самое. Кодировка URL-адреса должна работать.
Пожалуйста, помогите мне! Спасибо!
что значит «полностью не работает»? какой код ошибки вы идете? какая ошибка в вашем серверном файле? что появляется?
ваши правила перезаписи в порядке! ошибка разрешения не имеет значения, поскольку это не тот файл, который вы хотите обслуживать, пока доступен handler.php.
однако я думаю, что ваша ошибка в том, что приведенная выше конфигурация не совсем та, которую вы пробовали. если у вас это так:
RewriteRule ^(.*)$ handler.php?a=b
вы потеряете союзник наших аргументов строки запроса, потому что он будет перезаписан a = b. тогда вы можете сделать следующее:
RewriteRule ^(.*)$ handler.php?a=b [QSA]
который сообщает apache добавить строку запроса (QSA = QueryStringAppend)