Файловая структура следующие
/home/usrname/public_html
/home/usrname/public_html/cgi-bin
/home/usrname/public_html/_private
/home/usrname/public_html/_private/data
То, что я хотел бы сделать, является преобразованием код ниже от Apache 1.3.42 к Apache 2.4.12 .htaccess файла, приличные, несколько изменений во время пути SSL что я "m, действительно становясь одержимыми главным образом.
Когда Вы пробуете любой документ путем SSL все, что я вижу, соединяют ли _private каналом а не путь public_html в источнике HTML для каких-либо типов файлов, как, CSS, js изображения, и т.д.
У меня также есть проблемы полномочий, который просит меня входить в систему во время режима SSL, это должно произойти из-за одного из другого .htaccess
файлы. Это должно быть просто, все же так или иначе я не добираюсь, правила правильно встраивают просто все же.
Вот строки кода в каждом .htaccess файле.
Общедоступные файлы:/home/usrname/public_html
RewriteEngine On
RewriteCond %{HTTP_HOST} ^99\.00\.99\.000$
RewriteRule ^/?(.*)$ http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^/?(.*)$ http://www.example.com/$1 [R=301,L]
RewriteCond /home/usrname/public_html/%{REQUEST_FILENAME} -f
RewriteRule ^(.+) /home/usrname/public_html/$1 [L]
RewriteCond /home/usrname/public_html/_private/%{REQUEST_FILENAME} -f
RewriteRule ^(.+) /home/usrname/public_html/_private/$1 [L]
RewriteRule ^(.+) - [PT]
DirectoryIndex home.html index.htm index.html default.htm Default.htm
Action cgi-ccd /cgi-bin/aws.emp
AddHandler cgi-ccd html
AddHandler default-handler .gif
AddHandler default-handler .jpg
<FilesMatch "\.(inx|weo|lco|dbo|cdo|fpo|dao)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
<Files 403.shtml>
order allow,deny
allow from all
</Files>
У нас также есть они .htaccess
файлы на учетной записи в их соответствующих путях.
Частные файлы:/home/usrname/public_html / _ частный
AuthUserFile .htpasswd
AuthGroupFile /dev/null
AuthName Administrator
AuthType Basic
<limit GET>
require valid-user
</limit>
Базы данных:/home/usrname/public_html / _ частный / данные
AuthUserFile .htpasswd
AuthGroupFile /dev/null
AuthName Administrator
AuthType Basic
<limit GET>
require valid-user
</limit>
МУСОРНОЕ ВЕДРО CGI:/home/usrname/public_html/cgi-bin
Options +ExecCGI
Order allow,deny
Allow from all
Возможно, существует что-то со способом, которым они все сотрудничают, которые являются проблемой теперь в Apache 2.4 +? Возможно, это - полномочия с вызовом файла от КАТАЛОГА BIN CGI, я могу переместить это в случае необходимости?
301 перенаправление является довольно простым, приличным. Синтаксису, возможно, понадобится измененный для версии, но они кажутся достаточно простыми программе. Я думаю, что существует некоторый конфликт с чем-то как Опции FollowSymLinks SymLinksIfOwnerMatch ExecCGI, Включает MultiViews или некоторую другую комбинацию; я попробовал несколько комбинаций без удачи.
В конце все, что я пытаюсь сделать, маскирует путь cgi-мусорного-ведра полного пути программного обеспечения, все же обеспечивает старый путь назад как 301 перенаправление, таким образом, мы не теряем ссылок, которые могут быть индексированы и или отмечены.
.i.e.
From: http://www.example.com/cgi-bin/aws.emp/any-document-file-name.html
To: http://www.example.com/any-document-file-name.html
или в режиме SSL.
From: https://www.example.com/cgi-bin/aws.emp/any-document-file-name.html
To: https://www.example.com/any-document-file-name.html
Я нашел, изменяю ли я следование %{REQUEST_FILENAME}
кому: %{REQUEST_URI}
это, по крайней мере, позволяет всему работать, если Вам не нужен путь SSL, он затем показывает путь _private для любых типов файлов, таких как CSS, js, изображения и так далее.
Я надеюсь, что предоставил достаточно информации, чтобы помочь решить этот противный вопрос, печально я очень неопытен с mod_rewrites, и таким образом это походит своего рода на черную магию прямо сейчас. Это может занять недели для решения простых приличных вещей самостоятельно.
Любая справка значительно ценится, я так хотят мигрировать прочь Apache 1.3.42, поскольку это - запоздалый путь и после того как эта проблема была решена, я могу.
Я обнаружил, что если я изменю следующее с
% {REQUEST_FILENAME}
на% {REQUEST_URI}
, то, по крайней мере, все будет работать
Если этим вы имеете в виду следующий блок кода (предположительно в корневом файле .htaccess
):
RewriteCond /home/usrname/public_html/%{REQUEST_FILENAME} -f
RewriteRule ^(.+) /home/usrname/public_html/$1 [L]
RewriteCond /home/usrname/public_html/_private/%{REQUEST_FILENAME} -f
RewriteRule ^(.+) /home/usrname/public_html/_private/$1 [L]
RewriteRule ^(.+) - [PT]
Тогда это имеет лишь небольшой смысл. Проблема в том, что эти директивы не работали бы и на Apache 1.3, если бы они использовались в .htaccess
.
«Проблема» в том, что содержимое этого файла .htaccess
похоже, что он был взят прямо из конфигурации сервера. В контексте .htaccess
эти директивы никогда не будут совпадать, независимо от того, был ли REQUEST_FILENAME
изменен на REQUEST_URI
. При использовании в конфигурации сервера REQUEST_FILENAME
совпадает с REQUEST_URI
, но в .htaccess
REQUEST_FILENAME
- это абсолютный путь файловой системы, которому соответствует запрос . Таким образом, использование REQUEST_URI
в этом контексте просто «менее ошибочно», оно все равно неверно.
Перезапись в / home / usrname / public_html / ...
(абсолютный путь к файловой системе) недопустим в .htaccess
. В случае успешного выполнения это приведет к неверному запросу 400.
Однако эти директивы на самом деле не выглядят так, как будто они что-то делают. Они просто перезаписывают запрос обратно в тот же файл - что не имеет особого смысла - так что трудно понять, в чем заключаются намерения этих директив? Возможно, они предназначены для того, чтобы остановить выполнение других директив (например, для предотвращения передачи запросов в сценарий CGI)?
некоторый конфликт с чем-то вроде Options FollowSymLinks SymLinksIfOwnerMatch ExecCGI Includes MultiViews
Вам понадобится FollowSymLinks
или SymLinksIfOwnerMatch
, установленный для работы mod_rewrite. И вам может потребоваться отключить MultiViews
.