我试着做这件事: 我想将特定域 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]
答案 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="/" />