htaccess - 多个域到子文件夹

时间:2014-01-20 12:23:59

标签: php .htaccess mod-rewrite redirect

我试着做这件事: 我想将特定域 A 的所有流量重定向到根目录的子文件夹。我将使用子文件夹对多个域执行相同的操作。

示例:

www.domaina.it -> /public_html/domainadir/
www.unioncucine.it -> /public_html/unioncucine/

为此,我使用这个似乎有效的代码完成了它:

DirectoryIndex index.php index.html
DirectorySlash Off
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/unioncucine/
RewriteCond %{HTTP_HOST} ^(www\.)?unioncucine\.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /unioncucine/$1
RewriteCond %{HTTP_HOST} ^(www.)?unioncucine.it$
RewriteRule ^(/)?$ /unioncucine/index.html [L] 

它似乎有效但在这种情况下不是:

我想访问www.unioncucine.it/web,其中我已经加载了一个测试joomla页面(它没有模板,因为我正在处理它)。

如果你去这里:www.unioncucine.it/web我被重定向到www.unioncucine.it/unioncucine/web/并且它没有正确加载内容。

来到这里:www.unioncucine.it/web/它工作正常。 (页面只是一些单词和css scretch)。

#Changing
RewriteRule ^(.*)$ /unioncucine/$1
#To
RewriteRule ^(.*)$ /unioncucine/$1/

它似乎无需重定向,但其他文件夹中的所有文件都不可用。

谢谢

编辑:

按照你说的改变:

RewriteCond %{REQUEST_URI} !^/web/templates/protostar/ [NC]
RewriteRule ((?:css|js|images)/.+)$ /web/templates/protostar/$1 [L,NC,R=301]
RewriteCond %{REQUEST_URI} !^/unioncucine/
RewriteCond %{HTTP_HOST} ^(www\.)?unioncucine\.
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /unioncucine/$1/
RewriteCond %{HTTP_HOST} ^(www.)?unioncucine.it$
RewriteRule ^(/)?$ /unioncucine/index.html [L] 

但它仍然不起作用:http://www.unioncucine.it/css/template.css

1 个答案:

答案 0 :(得分:0)

由于www.domain.it/domainadir/test,您会从www.domain.it/domainadir/test/重定向到mod_dir,这会在目录后面添加一个斜杠。

在其他现有代码之前,在.htaccess 之上添加这2行:

DirectoryIndex index.html

DirectorySlash Off

虽然您应该添加规则以在规则中添加尾部斜杠:

RewriteEngine On

# fix css/js/images
RewriteCond %{REQUEST_URI} !^/web/templates/protostar/ [NC]
RewriteRule ((?:css|js|images)/.+)$ /web/templates/protostar/$1 [L,NC,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/domainadir/
RewriteCond %{HTTP_HOST} ^(www\.)?domaina\.
RewriteRule ^(.*)$ /domainadir/$1/ [L]

对于css / js / images 最好在css,js,images文件而不是相对文件中使用绝对路径。这意味着您必须确保这些文件的路径以http://或斜杠/开头。

您可以尝试在页面标题中添加:

<base href="/" />