Вот мой файл .htaccess:.htaccess сталкиваясь с GET Params
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* ?p=$0
Который должен перенаправлять mysite.com/?p=request
только если request
не является файлом. Но это неправильно соответствует запросу, например, http://mysite.com/auth.php?openid.ns=http%3A%2F
из-за %2F
(auth.php действительно существует). Я не понимаю, почему это затмевает ... идеи?
Edit: Ребята, я ставлю акцент на %2F
(который является прямой слэш кстати), потому что отлично работает, когда этот персонаж не там
Чтобы было ясно,
I получить 404 для этой страницы: http://mysite.com/auth.php?openid.ns=http%3A%2F
, но не эту страницу: http://mysite.com/auth.php?openid.ns=http%3A
Просто FYI, я действительно ввернул этот вопрос. Это была ошибка 403, которая произошла в любое время, когда% 2F появился в URL-адресе. Мое приложение ломало эту ошибку и выплескивало обманчивое 404, которое может быть менее пугающим для конечного пользователя. На самом деле не имеет никакого отношения к .htaccess. Более подробно в моем ответе ниже.
Вы можете включить очень подробные журналы перезаписи и, возможно, разместить соответствующие части здесь, чтобы мы могли видеть, что происходит на самом деле. – kch
Могу ли я включить подробный доступ через .htaccess? Я на общем сервере, у меня нет доступа ко всем увлекательным настройкам apache (а я и apache n00b) – mpen