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