我正在构建一个应用程序,我想将子域“x”映射到example.com/_sub/x/
但前提是文件夹“_sub”中存在文件夹“x”。如果没有,我希望显示 example.com。以下方法有效,但前提是文件或文件夹也存在于文件夹 x 中。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(.*).example.com [NC]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ http://example.com/_sub/%1/$1 [L]
</IfModule>
这是另一种看待它的方式。
doesNotExist.example.com -> example.com
test.example.com -> test.example.com
example.com -> example.com
这是我更新的代码。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
#If the file and directory exists
RewriteCond %{HTTP_HOST} ^(.*).example.com [NC]
RewriteCond %{DOCUMENT_ROOT}/_sub/%1/ -d
RewriteCond %{DOCUMENT_ROOT}/_sub/%1/$1 -f
RewriteRule ^(.*)$ http://example.com/_sub/%1/$1 [P]
#If the directory exists but the file does not
RewriteCond %{HTTP_HOST} ^(.*).example.com [NC]
RewriteCond %{DOCUMENT_ROOT}/_sub/%1/ -d
RewriteCond %{DOCUMENT_ROOT}/_sub/%1/$1 !-f
RewriteRule ^(.*)$ http://example.com/_sub/%1/404.html [P]
</IfModule>