У меня есть система, в которой я размещаю на своем сервере несколько SSL-сайтов. Мне также нужно настроить OAuth для каждого домена, в частности для Google и Yahoo. Каждый из них требует, чтобы файлы проверки были установлены на сервере, чтобы подтвердить право собственности. Таких файлов сейчас так много, что они засоряют мой корневой каталог. Итак, я хочу настроить правило перезаписи для отправки запроса на определенный URL-адрес в каталог файла проверки, например:
RewriteRule (^/googlew*.html$) /verifications$1
При этом отправляется запрос файла подтверждения Google, например http: //server/google27c81d94580e55dd.html к http: //server/verifications/google27c81d94580e55dd.html, и без перезаписи URL-адреса все работает нормально.
Но когда запрос идет на URL-адрес SSL, он терпит неудачу. Вот моя конфигурация:
<VirtualHost *:80>
ServerName <domain>
DocumentRoot /www/public
RewriteEngine On
RewriteRule (^/googlew*.html$) /verifications$1 [R]
RewriteRule (^.*--.html$) /verifications$1 [R]
</VirtualHost>
<VirtualHost <ipaddress>:443>
SSLEngine On
ServerName <domain>
DocumentRoot /www/public
RackEnv production
RewriteEngine On
RewriteRule (^/googlew*.html$) /verifications$1 [R]
RewriteRule (^.*--.html$) /verifications$1
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
SSLCertificateChainFile /usr/share/ssl/crt/intermediate.crt
SSLCertificateFile /usr/share/ssl/crt/<domain>/<domain>.crt
SSLCertificateKeyFile /usr/share/ssl/crt/<domain>/<domain>.key
</VirtualHost>
Поэтому, когда запрос является небезопасным HTTP, он работает нормально. Когда это защищенный HTTPS, он не работает. Любые предложения относительно того, почему?
ОБНОВИТЬ В соответствии с запросом, вот вывод журнала перезаписи на уровне 3:
init rewrite engine with requested uri /google27c81d94580e55dd.html
applying pattern '(^/googlew*.html$)' to uri '/google27c81d94580e55dd.html'
applying pattern '(^.*--.html$)' to uri '/google27c81d94580e55dd.html'
pass through /google27c81d94580e55dd.html
А теперь самое забавное: до того, как я написал свой исходный пост, небезопасная версия работала нормально. После того, как я разместил, незащищенная версия тоже перестала работать! Запись журнала, которую я только что вставил, - это то, что я получаю при запуске незащищенной версии. Лицо. Взрыв.
Несколько вещей:
^
и $
.\w*
, вместо того w*
; который будет соответствовать этим символам.Итак, попробуйте это:
RewriteRule ^(/google\w*\.html)$ /verifications$1 [R]
Я не следую цели вашего второго правила; можешь уточнить?