我的文件结构:
-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文件?
答案 0 :(得分:1)
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标志而执行的最后一条规则。其余的就像它一样,使这些网络别名成为可能。