2012-11-27 19 views
0

这可能是一个新手的问​​题,但...我的Apache配置SSL站点如下:阿帕奇始终服务的DocumentRoot的index.php

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配置是错误的。

+0

你可以尝试'的AllowOverride none'给我的结果吗? – Eray

+0

你的根目录中是否有'.htaccess'文件? – jaudette

+0

@Eray:没有任何变化,:-( –

回答

0

我解决了这个问题,我不得不删除第一部分别名线的最后一个斜杠。

这是错误的:

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

这是正确的:

Alias /mydir "/var/www/myapp/mydir" 
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)。让我知道它是否工作

+0

我改变了配置,因为你提到没有运气,我认为应该有一种方法,使其无需.htaccess工作。让它在我的笔记本电脑(Mac OS X)中以这种方式工作,但是相同的配置在Ubuntu中不起作用,这正是我上面所描述的 –