带有.htaccess的虚拟目录

时间:2012-08-02 20:38:03

标签: .htaccess mod-rewrite

您好我有以下页面:

1st site folder: www.site.com /www/www1/
2nd site folder: www2.site.com /www/www2/
Ajax Folder: /www/ajax/
CDN Folder: /www/cdn/

wwwwww2网站使用了一些ajax的东西,因为我不想为每个网站创建一个自己的ajax文件夹,我想使用相同的目录,我想要做的是以下内容:

我有wwwwww2个网站,每个网站必须使用相同的ajax文件夹,我试图为连接到我的ajax文件夹的每个网站创建一个虚拟文件夹。

所以必须是www.site.com/ajax/myfileajax.php?id=1 也适用于www2.site.com/ajax/myfileajax.php?id=2

我尝试使用.htaccess,但没有运气只有404错误

RewriteRule /inc/^(.*) ../ajax/$1 [L]

我不想为x-domain ajax重新编码我的所有javascript,这就是我想要这样做的原因。 我的托管服务提供商无法编辑httpd.conf,所以这是我使用.htaccess的唯一机会。 我也试过alias但是没有用。

1 个答案:

答案 0 :(得分:0)

尝试将此文件放在文档根目录中的htaccess文件中(我假设是/ www /):

RewriteEngine On

# for www.site.com
RewriteCond %{HTTP_HOST} www.site.com [NC]

# check that the request needs to be routed (ajax/cdn don't need to be routed)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# check that we get routed to an existing file or directory
RewriteCond %{DOCUMENT_ROOT}/www1%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/www1%{REQUEST_URI} -d 

# Do the route to /www1/
RewriteRule !^/?www1 /www1%{REQUEST_URI} [L]


# for www2.site.com
RewriteCond %{HTTP_HOST} www2.site.com [NC]

# check that the request needs to be routed (ajax/cdn don't need to be routed)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# check that we get routed to an existing file or directory
RewriteCond %{DOCUMENT_ROOT}/www2%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/www2%{REQUEST_URI} -d 

# Do the route to /www2/
RewriteRule !^/?www2 /www2%{REQUEST_URI} [L]

第一项检查是确定请求所针对的主机名。第二项检查是请求不适用于现有资源。如果请求是/ajax/myfileajax.php,那么如果/ ajax /目录中存在该文件,则不需要进行任何路由。第三个检查是为了确保我们是否路由,我们将URI指向现有资源。此位只是为了404错误报告请求的URI而不是前面附加/www1/的URI。换句话说,除非那里有东西,否则不要路由,否则就像正常那样只是404。