.htaccess用于Pan域指向子目录

.htaccess用于Pan域指向子目录,.htaccess,subdomain,.htaccess,Subdomain,如何使用htacess进行此操作: a.domain.com -> domain.com/a b.domain.com -> domain.com/b . . . z.domain.com -> domain.com/z 我尝试: RewriteCond %{HTTP_HOST} ^(.*).domain.com$ [NC] RewriteRule (.*) %1/$1 [L] 但是500个错误试试这个: RewriteEngine on RewriteCo

如何使用htacess进行此操作:

 a.domain.com -> domain.com/a
 b.domain.com -> domain.com/b
 .
 .
 .
 z.domain.com -> domain.com/z 
我尝试:

RewriteCond %{HTTP_HOST} ^(.*).domain.com$ [NC]

RewriteRule (.*) %1/$1 [L]
但是500个错误

试试这个:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC]
RewriteRule ^(.*)$ %1/$1 [L,QSA]
可能的问题:

  • 您是否将代码上方的行
    重写引擎设置为on
  • mod_rewrite
    是否已安装/启用
试试这个:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC]
RewriteRule ^(.*)$ %1/$1 [L,QSA]
可能的问题:

  • 您是否将代码上方的行
    重写引擎设置为on
  • mod_rewrite
    是否已安装/启用
非常类似于:

不幸的是,您得到的规则将不起作用(确切地说:它们实际上起作用了——URL被重写了……但在Apache看到
[L]
标志后,它将进入另一个迭代……在那里它被再次重写……并且再次——进入无休止的循环,Apache必须在某个点打破这个循环)

您必须添加一些条件,这些条件将完全中断迭代。有几种可能的方法可以做到这一点(取决于您的其他规则,您可以在这里阅读更多--)

我修改了规则,增加了2个条件,只有当目的地确实存在时才重写规则

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
RewriteRule (.*) %1/$1 [L,QSA]
所以。。它是如何工作的。我们将使用此URL作为示例:
http://home.domain.com/kaboom.txt

  • 如果文件
    domain.com/home/kaboom.txt不存在,则不会发生任何事情
  • 如果这样的文件确实存在——URL会被内部重写为
    http://home.domain.com/home/kaboom.txt
    (完整的URL)。Apache进入下一个迭代。在那里,它检查是否存在
    domain.com/home/home/kaboom.txt
    。很可能不会(除非您有与子域同名的子文件夹),并且不会再发生重写——作业已完成
  • 非常类似于:

    不幸的是,您得到的规则将不起作用(确切地说:它们实际上起作用了——URL被重写了……但在Apache看到
    [L]
    标志后,它将进入另一个迭代……在那里它被再次重写……并且再次——进入无休止的循环,Apache必须在某个点打破这个循环)

    您必须添加一些条件,这些条件将完全中断迭代。有几种可能的方法可以做到这一点(取决于您的其他规则,您可以在这里阅读更多--)

    我修改了规则,增加了2个条件,只有当目的地确实存在时才重写规则

    RewriteEngine on
    
    RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
    RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
    RewriteRule (.*) %1/$1 [L,QSA]
    
    所以。。它是如何工作的。我们将使用此URL作为示例:
    http://home.domain.com/kaboom.txt

  • 如果文件
    domain.com/home/kaboom.txt不存在,则不会发生任何事情
  • 如果这样的文件确实存在——URL会被内部重写为
    http://home.domain.com/home/kaboom.txt
    (完整的URL)。Apache进入下一个迭代。在那里,它检查是否存在
    domain.com/home/home/kaboom.txt
    。很可能不会(除非您有与子域同名的子文件夹),并且不会再发生重写——作业已完成