Файл конфигурации Apache неправильно обрабатывает URL-адреса

Последнее редактирование 27.11.17

Я управляю набором веб-сайтов, все по протоколу HTTP, но я ' m теперь добавляю HTTPS-сайт.

I ' Я потратил много времени на мой файл конфигурации Apach в моей локальной среде разработки Windows, пытаясь обслуживать веб-сайты HTTP и HTTPS (это кажется сложнее, чем моя производственная среда WHM / cPanel, где я не ожидаю никаких проблем).

Примечание: этот вопрос не должен требовать особых знаний Windows - он может применяться аналогично к Linux.

Я пробовал много разных порядков для директив и многие другие варианты. Все не работают по-разному. Но я приближаюсь.

Я хочу, чтобы работали URL-адреса типа localhost / spring (все мои локальные веб-сайты находятся в папке C: \ Web, что эквивалентно URL-адресу localhost /).

Но я хочу специальная обработка для моего единственного веб-сайта HTTPS, C: \ Web \ richard, эквивалентна localhost / richard. Чтобы сделать этот локальный сайт HTTPS, Я использую простой метод редактирования локального файла HOSTS, чтобы сопоставить мое безопасное доменное имя (richardjaybrown.com) с локальным компьютером (127.0.0.5). Затем вместо использования localhost / richard, у которого нет сертификатов, я могу использовать richardjaybrown.com, который имеет (сертификат включает www.richardjaybrown.com).

Я использую локальный адрес обратной петли 127.0.0.5 для предоставления другого IP адрес, чтобы попытаться помочь с выбором правильных директив Apache.

Я считаю, что все это простые стандартные вещи, которые могут понадобиться каждому, но я не могу заставить его работать должным образом.

Потому что некоторые комментаторы хотели, чтобы здесь были подробности. в вопросе, а не в отдельном Pastebin, вот подробности:

1. Entire Apache config file

ServerAdmin "Local SYS5 Server (contact via www.springtimesoftware.com)"
ServerRoot "c:/Apache24"

# Main Server (and defaults?)

Listen 127.0.0.1:80
ServerName localhost
# http://localhost/WEBSITE is mapped to C:\Web\WEBSITE
DocumentRoot "c:/Web"
<Directory "c:/Web">
    AllowOverride all
    Require ip 127.0.0.1
    Require host localhost
    #Require ip 192.168.1.0/24
    DirectoryIndex index.html
</Directory>

# Secure (SSL/TLS) connection for this secure (HTTPS) website
Listen 127.0.0.5:443
SSLSessionCache        "shmcb:c:/Apache24/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300

# see http://httpd.apache.org/docs/current/vhosts/examples.html

# Redirect all HTTP richardjaybrown.com URLs to the HTTPS version
<VirtualHost 127.0.0.5:80>
    ServerName richardjaybrown.com
    ServerAlias www.richardjaybrown.com
    UseCanonicalName Off
    RedirectMatch 301 ^/(.*)$ https://www.richardjaybrown.com/$1
</VirtualHost>

# Secure (SSL/TLS) connection for this secure (HTTPS) website
<VirtualHost 127.0.0.5:443>
    ServerName www.richardjaybrown.com
    ServerAlias richardjaybrown.com
    UseCanonicalName Off
    DocumentRoot "C:/Web/richard"
    SSLEngine on
    SSLCertificateFile "C:/Main/LocalCert/richard/richard.crt"
    SSLCertificateKeyFile "C:/Main/LocalCert/richard/richard.key"
    SSLCertificateChainFile "C:/Main/LocalCert/richard/LECA.crt"
</VirtualHost>

# Default security
#Require all denied
#AllowOverride none
#DirectoryIndex disabled
Options -Indexes -MultiViews +SymLinksIfOwnerMatch

AddDefaultCharset utf-8

# To prevent hang on any GET request (IE bug?):
AcceptFilter http none
AcceptFilter https none

# Modules used
#LoadModule access_compat_module modules/mod_access_compat.so for compatibility with Apache 2.2
LoadModule alias_module modules/mod_alias.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule log_debug_module modules/mod_log_debug.so
LoadModule mime_module modules/mod_mime.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so

# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ".ht*">
    Require all denied
</Files>

ErrorLog "logs/error.log"
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access.log" combined
</IfModule>

<IfModule alias_module>
    ScriptAlias /cgi-bin/ C:/Web/cgi-bin/
    ScriptAlias cgi-bin/ C:/Web/cgi-bin/
</IfModule>

<Directory C:/Web/cgi-bin>
    AllowOverride None
    Options +ExecCGI
    Require ip 127.0.0.1
    Require host localhost
</Directory>

<IfModule mime_module>
    TypesConfig conf/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
</IfModule>

ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 405 /error.php
ErrorDocument 408 /error.php
ErrorDocument 409 /error.php
ErrorDocument 414 /error.php
ErrorDocument 500 /error.php
ErrorDocument 501 /error.php
ErrorDocument 503 /error.php
ErrorDocument 505 /error.php

# Always allow error page
<Files "/err.php">
    Require ip 127.0.0.1
    Require host localhost
</Files>

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

#<Directory C:/>
#   Allow from 127.0.0.1
#   Allow from localhost
#   Allow from 192.168.1.0/24
#</Directory>

# PHP

# Use PHP as a CGI binary:
#ScriptAlias /php "/Progra~2/PHP/"
#Action application/x-httpd-php "/php/php.exe "

# Use PHP as a module
#ds Must be full path for Apache:
LoadFile "C:/Progra~2/PHP/php5ts.dll"
LoadModule php5_module "C:/Progra~2/PHP/php5apache2_4.dll"
PHPIniDir "C:/Progra~2/PHP"

#AddHandler application/x-httpd-php .php
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

# Temporarily prevent all caching of served files
Header unset Cache-Control

# Set default basedirs for safety
php_value open_basedir "C:\Web;C:\ProgramData\MySQL\MySQL Server 5.6\data;"

2. HOSTS file

127.0.0.5 www.richardjaybrown.com richardjaybrown.com

3. .htaccess file in C:\Web\richard

DirectoryIndex index.html

3. Some Tests (browser URLs)

http://www.richardjaybrown.com/ should redirect to https://www.richardjaybrown.com/ locally
http://richardjaybrown.com/ should redirect to https://www.richardjaybrown.com/ locally
http://localhost/spring should redirect to http://localhost/spring locally
http://localhost should not redirect
http://localhost/web/site should not redirect
0
задан 27 November 2017 в 20:54
1 ответ

Я думаю, чтобы он работал на вашем локальном компьютере, вам не нужны сертификаты хоста. Также я думаю, что вам не нужен файл конфигурации apache. Но если вам нужно заставить ваш сайт работать на вашем локальном компьютере, вы должны использовать файлы hosts и добавить имя домена. Это означает, что вы отредактируете файл / etc / hosts в Linux, добавив еще один ip, например: 127.0.0.5 www.richardjaybrown.com Затем введите свой файл конфигурации apache, экземпляр Затем, когда в вашем браузере вы добавляете www.richardjaybrown.com, он будет перенаправлен на ваш локальный www.richardjaybrown.com, потому что вы добавили к своему локальному, что если это имя будет найдено, оно будет сначала разрешено на вашем компьютере, но с этим решением у вас не будет доступа к вашему производственному сайту: www.richardjaybrown.com

-1
ответ дан 5 December 2019 в 18:44

Теги

Похожие вопросы