2009-07-25 3 views
0

Извините, если это было задано раньше, но я не смог его найти. У меня есть папка, которая при посещении загрузок как в HTTPS, так и в HTTP.Mod_Rewrite Force HTTP для всех файлов, кроме одного

Я хочу, чтобы все файлы в этой папке загружались в HTTP, за исключением одного файла. Файл, который мне нужен, в HTTPS: login.php, и эта папка называется «форум». Также, если это помогает: все файлы в папке - * .php.

я что-то вдоль линий пытаюсь:

#RewriteCond %{SERVER_PORT} !^443$ 
#RewriteRule ^/login.php$ - [L] 

#RewriteCond %{SERVER_PORT} ^443$ 
#RewriteRule ^(/login.php) $ https://%{HTTP_HOST}/$1 [QSA,NC,R,L] 

#RewriteCond %{SERVER_PORT} !^443$ 
#RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [QSA,NC,R,L] 

Я немного любителя, когда речь идет о mod_rewrite так что простите меня, если вышеперечисленное полностью выключено. Также, если вы опубликуете решение, я был бы признателен, если вы опубликуете его с объяснением, чтобы я мог НАЧАТЬ как это работает.

Заранее благодарен! Дэвид

+0

Следует предположить, что вы никогда не были линии комментировал, когда вы «пытаются»? – MitMaro

+0

Да, они были раскомментированы, когда пытались. Извините, я просто скопировал строки из файла conf после отключения их, когда увидел, что он не работает. – 2009-07-26 00:12:07

ответ

1

Дайте это попробовать:

Options +FollowSymLinks 
RewriteEngine On 


# port 443 traffic to http://, except login.php 
RewriteCond %{SERVER_PORT} ^443$ 
RewriteCond %{REQUEST_URI} !^/login\.php$ [NC] 
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# port 80 traffic for login.php to https:// 
RewriteCond %{SERVER_PORT} ^80$ 
RewriteCond %{REQUEST_URI} ^/login\.php$ [NC] 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+0

Я выполняю миграцию на данный момент, поэтому попробую это, как только закончу. Благодаря! – 2009-07-26 00:12:39

+0

Кажется, что-то происходит, но это точно не работает. Теперь форум по-прежнему загружается под HTTPS, то есть index.php, но как только я нажимаю на ссылку форума, я получаю ERROR, что он не существует. Он загружается нормально, если я иду по HTTP. Возможно, это что-то связано с SEO-модулем, который я установил? Тем не менее правила SEO ниже этих. Значит, их следует читать в первую очередь? Если вы хотите взглянуть на себя, чтобы узнать, что происходит: http (s): //www.redbid.com/forum/. Приветствия – 2009-07-26 02:01:35

+0

Я не уверен на 100%, что мой ответ правильный. Я опаздываю. Я понятия не имею о SEO Mod. Я думал, что правила перезаписи, которые я дал, должны перенаправить https-трафик на любую страницу, кроме файла /login.php, на http. Я мог бы помочь, если бы вы могли публиковать журналы ошибок сервера. –

0

Попробуйте эти правила:

RewriteCond %{SERVER_PORT} !=443 
RewriteRule ^login\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

RewriteCond %{SERVER_PORT} !=80 
RewriteRule !^login\.php$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
+0

Привет, Gumbo, спасибо за ваш вклад. Однако та же проблема, что и в решении, упомянутом выше. Как с поддержкой, так и без него. Любые другие мысли? Cheers – 2009-07-26 19:58:15

+0

Вы установили это правило до или после ваших других правил? Если не раньше, сделайте это. – Gumbo

Смежные вопросы