如何设置文档根目录使用.htaccess文件和未虚拟主机是一个子目录(How to set docu

2019-09-02 19:07发布

在我的本地机器下面的工作完美:

 <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.confhttpd.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个线路。

Answer 1:

启用了mod_rewrite并通过的.htaccess httpd.conf ,然后把这个代码在你.htaccessDOCUMENT_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=302R=301 。 避免使用R=301 (永久重定向),同时测试您的mod_rewrite规则。



Answer 2:

使在一个的.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]


Answer 3:

重写所有的图像请求根可能是一个解决方案。 您可以在根目录下一个.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