Apache总是服务于DocumentRoot index.php

时间:2012-11-27 23:38:01

标签: php apache

这可能是一个新手问题,但是...我在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配置有问题。

2 个答案:

答案 0 :(得分: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)。让我知道它是否有效

答案 1 :(得分:0)

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

这是错的:

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

这是对的:

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