0

这可能是一个新手问题,但是......我在 Apache 中配置了一个 SSL 站点,如下所示:

NameVirtualHost *:443

<VirtualHost *:443>
    ServerName dev.wonnova.com
    DocumentRoot "/var/www/myapp/wwwroot"

    SSLEngine on

    SSLProtocol -all +TLSv1 +SSLv3
    SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM

    SSLCertificateFile /etc/apache2/ssl/mycert.crt
    SSLCertificateKeyFile /etc/apache2/ssl/mycert.key

    <IfModule mime.c>
        AddType application/x-x509-ca-cert      .crt
        AddType application/x-pkcs7-crl         .crl
    </IfModule>

    Alias /mydir/ "/var/www/myapp/mydir"

    <Directory "/var/www/myapp/mydir">
        SSLRequireSSL
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride all
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

问题是,无论我请求哪个 URL,我总是得到 /var/www/myapp/wwwroot/index.php 的内容(即DocumentRoot目录中的 index.php)。例如,这些 URL 会发生这种情况:

 - https://mysite/index.php
 - https://mysite/mydir/index.php
 - https://mysite/mydir/style.css
 - https://mysite/mydir/script.js

另一方面,如果我在 DocumentRoot 目录中创建一个 index2.php 文件,它会正确显示:

 - https://mysite/index2.php

我想我的 Apache 配置有问题。

4

2 回答 2

0

我解决了这个问题,我必须删除 Alias 行第一部分的最后一个斜杠。

这是错误的:

Alias /mydir/ "/var/www/myapp/mydir"

这是正确的:

Alias /mydir "/var/www/myapp/mydir"
于 2012-11-28T22:40:08.727 回答
0

首先,您可以从别名中删除撇号(我认为您的做法是对的)。更改主站点的配置:

Alias /mydir/ "/var/www/myapp/mydir"

    <Directory "/var/www/myapp/mydir">
        SSLRequireSSL
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride all
        Order allow,deny
        Allow from all
    </Directory>

至:

Alias  /mydir /var/www/myapp/mydir
    <Directory /var/www/myapp/mydir>
         SSLRequireSSL
         Allow From all
         Options +Indexes FollowSymLinks Includes ExecCGI
         AllowOverride all 

     </Directory>

您还需要转到 /var/www/myapp/ 并编辑 .htaccess 并将其更改为:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /mydir/
  RewriteRule ^index\.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /mydir/index.php [L]
</IfModule>

我假设您在别名指向的 /var/www/myapp/mydir 中有一个 DirectoryIndex 文件(例如 index.php)。让我知道它是否有效

于 2012-11-28T00:29:32.830 回答