请给我指出正确的方向。
我正在使用 .htaccess 在我的服务器上设置域。
我需要 domain.com 来访问 /domain.com/* 文件夹中的文件。如果文件不存在,则加载 /domain.com/index.php,而 domain.com/images/image.jpg 应该加载文件:/domain.com/images/image.jpg
一件事是,它应该加载所有内容而不向浏览器发送 302“文件已移动”通知。
感谢您的帮助!
答案1
如果你有很多域,或者即使你只有几个域,但它们的配置都大体相同,那么动态海量虚拟主机是为. 而制作的。类似这样的内容可以放在你的httpd.conf
文件中(或者放在 中包含的文件中httpd.conf
):
UseCanonicalName Off
VirtualDocumentRoot /var/www/%0/htdocs
ErrorLog /var/www/logs/error_log
CustomLog /var/www/logs/access_log combined
我还建议
DirectoryIndex index.php
index.php
如果客户端未指定文件名,则加载目录中的文件。
答案2
您应该为每个要映射到文件路径的域创建一个虚拟主机,并将每个虚拟主机的 DocumentRoot 指定为文件系统上的实际路径。然后,您需要确保您有一个默认虚拟主机,以便所有其他未设置的域请求都将使用默认虚拟主机。最后,您需要创建一个自定义 404 错误处理程序,这样如果请求的文件不存在,它将提供替代内容。您需要创建一个名为 custom_404.php 的 php,它显示通用消息和您的 /images/image.png。
# Default Domain (Undefined domains will fall back to this)
<VirtualHost *:80>
ServerAlias www.defaultdomain.com
DocumentRoot /var/www/default/htdocs
ErrorDocument 404 /custom_404.php
ErrorLog /var/www/default/logs/error_log
CustomLog /var/www/default/logs/access_log combined
</VirtualHost>
# domain1.com
<VirtualHost *:80>
ServerName domain1.com
ServerAlias www.domain1.com
DocumentRoot /var/www/domain1.com/htdocs
ErrorDocument 404 /custom_404.php
ErrorLog /var/www/domain1.com/logs/error_log
CustomLog /var/www/domain1.com/logs/access_log combined
</VirtualHost>
# domain2.com
<VirtualHost *:80>
ServerName domain2.com
ServerAlias www.domain2.com
DocumentRoot /var/www/domain2.com/htdocs
ErrorDocument 404 /custom_404.php
ErrorLog /var/www/domain2.com/logs/error_log
CustomLog /var/www/domain2.com/logs/access_log combined
</VirtualHost>
希望这可以帮助!
-凯文
答案3
您需要使用虚拟主机来组织这些内容。以下是示例虚拟主机文件。
<VirtualHost *:80>
ServerName example.net
ServerAlias www.example.net
ServerAdmin [email protected]
DocumentRoot /var/www/vhosts/www.example.net/html
ErrorLog /var/www/vhosts/www.example.net/logs/errors.log
Customlog /var/www/vhosts/www.example.net/logs/access.log combined
</VirtualHost>
将此文件放在 /etc/httpd/conf.d/ 中并将其命名为 vhost_example.net.conf
然后在 /etc/httpd/conf/httpd.conf 中添加例如最后一行
包括 /etc/httpd/conf.d/vhost_example.net.conf
(或者只是包含 /etc/httpd/conf.d/*.conf)并且在 httpd.conf 文件中,记得取消注释此行
名称虚拟主机 *:80