[英].htaccess Redirect Root to Subdomain
我正在尝试使用当前的共享主机配置来解决一些烦恼,但是我在设置所需的设置时遇到了一些问题。
当前,我具有以下文件夹结构:
/
/.htaccess
/example
/example1
/example2
/example3
在共享主机上,主域自动设置为指向根目录。 为了将主域指向子域,我在根文件的.htaccess中添加了以下内容:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteCond %{REQUEST_URI} !^/example/
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /example/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ example/ [L]
这样可以正确地重写URL,以便转到example.com可以显示/ example /子目录中的内容。 问题在于根目录的子目录不会以相同的方式重写,这不是我希望实现的功能。 例:
http://www.example.com/ = /example
http://www.example.com/example/ = /example
http://www.example.com/example1/ = /example1
http://www.example.com/example2/ = /example2
http://www.example.com/example3/ = /example3
我想发生的事情如下:
http://www.example.com/ = /example
http://www.example.com/example/ = /example/example
http://www.example.com/example1/ = /example/example1
http://www.example.com/example2/ = /example/example2
http://www.example.com/example3/ = /example/example3
我对应该发生的情况的理解如下:
这看起来确实可行,但是如果我尝试访问http://www.example.com/example2/ ,就会遇到问题。 由于REQUEST_URI与/ example /不匹配,我以为应该将其重写为/ example / example2,但是显然不会发生。
我没有访问Apache配置的权限,也没有设置VirtualHosts的能力,所以我希望可以使用.htaccess规则进行某些操作。 对我如何使此简单任务过于复杂的任何见解都将非常有帮助。
据我所知,如果根目录中的目录与传入的请求匹配(即,如果example1存在于根目录中,则将RewriteCond重写为/ example1到),则将忽略根目录中的.htaccess文件。错误页面从未被触发)。
我对此的解决方案最终没有我期望的那么优雅,但似乎可行。 希望它可以帮助偶然发现此问题的其他任何人。
在example1,example2和example3目录中,我修改了.htaccess文件以包括以下内容(根据目录更改example1):
RewriteCond %{HTTP_HOST} ^(www\.)example\.com$ [NC]
RewriteRule ^(.*)$ /example/example1/$1 [L]
这将强制主域提供我为其创建的子目录中的内容,即使根目录中存在匹配的目录也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.