«Http: //» в строке запроса не работает

ОБНОВИТЬ:

Я тестировал в субдомене – нет .htaccess и PHP. Я создал index.html и попытался получить доступ к /?p=http:/ и /?p=http:// . Я получил эту ошибку для /?p=http://

 Forbidden You don't have permission to access / on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. Apache Server at test.example.com Port 80 

Это исключает любую проблему с PHP или mod_rewrite. Что не так с Apache?

Случай 1 (не работает): mysite.com?p=http://

Случай 2 (работает): mysite.com?p=http:/

Если в строке запроса есть http:// или https:// или ftp:// , была бы ошибка, даже если бы я ее закодировал. У меня есть index.php (скрипт ввода) и test.php (для проверки этой ошибки). Если я нахожу URL-адрес (который идет через index.php ) с http:// внутри строки запроса, переменная $_GET будет пустой, даже если есть другие параметры. Если я нахожусь в test.php?p=http:// , я бы перенаправил (без изменения URL) в index.php с ошибкой (фреймворк обрабатывает недопустимые запросы). При замене http:// чем-то другим все работает нормально – test.php показывает, что это означает, все остальные запросы отправляются в index.php с заполнением $_GET .

Я заметил эту ошибку только после перехода на новый хост (hostdime to hostgator). Я не мог воспроизвести это где-нибудь еще (старый хост, локальный сервер).

Спасибо.

Мой файл .htaccess, лишенный какого-либо нерелевантного кода.

 # Use PHP 5.3 AddType application/x-httpd-php53 .php # ---------------------------------------------------------------------- # Start rewrite engine # ---------------------------------------------------------------------- <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On # removes www. # ------------------------------------------------------------------ RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] # rewrite "domain.com/foo -> domain.com/foo/" # ------------------------------------------------------------------ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$ RewriteRule ^(.*)$ /$1/ [R=301,L] # Yii specific rewrite # ------------------------------------------------------------------ # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php </IfModule> # without -MultiViews, Apache will give a 404 for a rewrite if a folder of the same name does not exist # ------------------------------------------------------------------ Options -MultiViews # ---------------------------------------------------------------------- # UTF-8 encoding # ---------------------------------------------------------------------- # Use UTF-8 encoding for anything served text/plain or text/html AddDefaultCharset utf-8 # Force UTF-8 for a number of file formats AddCharset utf-8 .html .css .js .xml .json .rss .atom # ---------------------------------------------------------------------- # Gzip compression # ---------------------------------------------------------------------- <IfModule mod_deflate.c> ... </IfModule> <IfModule mod_expires.c> ... </IfModule> <IfModule mod_autoindex.c> Options -Indexes </IfModule> # Block access to "hidden" directories whose names begin with a period. This # includes directories used by version control systems such as Subversion or Git. <IfModule mod_rewrite.c> RewriteCond %{SCRIPT_FILENAME} -d RewriteCond %{SCRIPT_FILENAME} -f RewriteRule "(^|/)\." - [F] </IfModule> # Increase cookie security <IfModule php5_module> php_value session.cookie_httponly true </IfModule>