如何在子文件夹和别名重定向

时间:2017-03-15 16:46:21

标签: .htaccess slim

我的文件结构

-www  
-- .htaccess  
-- domains/  
--- someAlias.com/  
---- indexOfOtherWebsite.html  
--- otherAlias.com/  
---- indexOfAnotherWebsite.html  
-- angularApp/  
-- restSlim/  
--- .htaccess  
--- index.php  

我正在使用由我的虚拟主机提供商生成的 .htaccess ,它允许我为别名运行不同的网站:

# htaccess rules for subdomains and aliases
# to create web for alias, create a folder www/domains/(whole domain name)

RewriteEngine On

RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]

这是Slim文档中的.htacces文件:

RewriteEngine on
RewriteRule ^$ www/     [L]
RewriteRule (.*) wwww/$1 [L]

我测试了Slim app,当index.php和.htaccess本身放在web根目录(www)中时工作正常。然后我将其移动到单独的文件夹(restSlim)并将 .htaccess 文件更改为:

RewriteEngine on
RewriteRule ^$ www/restSlim/     [L]
RewriteRule (.*) wwww/restSlim/$1 [L]

我希望Slim应用程序从子文件夹(restSlim)运行,而不会破坏web别名的功能。我该如何编辑那些.htaccess文件?

1 个答案:

答案 0 :(得分:1)

毕竟我已经让它发挥作用了。文件结构是一样的,只需从restSlim文件夹中删除.htaccess,并在www中只保留一个并编辑它:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(restSlim) restSlim/index.php [QSA,L]

RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]

第一部分解决了Slim在子目录中的工作问题,它应该是由于L标志而执行的最后一条规则。其余的就像它一样,使这些网络别名成为可能。