在我的本地机器下面的工作完美:
<VirtualHost *:80>
##ServerAdmin postmaster@dummy-host2.localhost
DocumentRoot "C:/xampp/htdocs/website_1"
ServerName testpage.com/website_1
##ServerAlias www.recruitement.localhost
##ErrorLog "logs/dummy-host2.localhost-error.log"
##CustomLog "logs/dummy-host2.localhost-access.log" combined
</VirtualHost>
Howerver林主办我的网站托管公司称为justhost.com,他们不允许我修改的httpd-vhosts.conf或httpd.conf文件 。 现在,我的整个网站的编码,使得在使用下斜线简单WEBSITE_1 WEBSITE_1参考其他文件的文件“/”意WEBSITE_1作为文档根处理。 这工作完全本地计算机上,但上传至主机时,因为无法找到这些文件,因为它试图定位的public_html这些文件给我的服务器错误
例如:
public_html
- website_1
- script.php
- style.css
我的script.php里面:
<a href="/style.css">See My Style</a>
这部作品在本地机器上很好,但是在主机上它,因为它试图找到public_html下,而不是的public_html / WEBSITE_1 style.css中失败
有没有办法有多个文档根目录,而无需使用虚拟主机? 喜欢使用的.htaccess或别的东西。 请我想尽量避免尽可能多地重写代码,因为代码的大约10个线路。
启用了mod_rewrite并通过的.htaccess httpd.conf
,然后把这个代码在你.htaccess
下DOCUMENT_ROOT
目录:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/website_1/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/website_1/$1 -d [OR]
RewriteCond %{DOCUMENT_ROOT}/website_1/$1 -l
RewriteRule (?!^website_1/)^(.*)$ /website_1/$1 [R=302,L,NC]
一旦你验证它是否工作正常,更换R=302
到R=301
。 避免使用R=301
(永久重定向),同时测试您的mod_rewrite规则。
使在一个的.htaccess项。 假设你有一个网站abc.com。 你想运行在目录其他网站。 然后创建一个在的.htaccess父目录指向abc.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^abc.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.abc.com$
RewriteCond %{REQUEST_URI} !subdirectory/
RewriteRule (.*) /subdirectory/$1 [L]
重写所有的图像请求根可能是一个解决方案。 您可以在根目录下一个.htaccess文件试试这个:
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
# Check if request is for an image at root. Add/remove file types if necessary.
RewriteCond %{REQUEST_URI} ^/([^.]+)\.(png|jpg|gif|css) [NC]
RewriteCond %{REQUEST_URI} !/website_1 [NC]
# Rewrite request to point to "website_1" directory
RewriteRule .* /website_1/%1.%2 [L,NC]
文章来源: How to set document root to be a subdirectory using .htaccess and not VHost