【问题标题】:Htaccess Virtual Subdomain not work properlyHtaccess 虚拟子域无法正常工作
【发布时间】:2013-09-09 19:07:39
【问题描述】:

我使用 Htaccess 文件将我的网站子域重写为我网站上的相关文件。 例如:

http://articles.mysite.com --> http://mysite.com/articles 我写了这段代码:

RewriteCond %{HTTP_HOST} !^www.mysite.*
RewriteCond %{HTTP_HOST} ^([^.]+).mysite.*
RewriteRule ^$ ./%1 [L] 

但是当我想使用这个时:

http://articles.mysite.com/some/some --> http://mysite.com/articles/some/some

以上代码无法正常工作并将我重定向到 404 NotFound 页面

注意:在我的 .htaccess 文件的另一个地方我有 RewriteRule ^some/(.*)$ ./some.php?id=$1 [L]

【问题讨论】:

    标签: php apache .htaccess redirect mod-rewrite


    【解决方案1】:

    只需将您的规则更改为:

    RewriteRule ^(.*)$ /%1/$1 [L]
    

    并添加条件以防止循环:

    RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
    

    所以你有:

    RewriteCond %{HTTP_HOST} !^www.mysite.*
    RewriteCond %{HTTP_HOST} ^([^.]+).mysite.*
    RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
    RewriteRule ^(.*)$ /%1/$1 [L]
    

    【讨论】:

    • @EbadGhafoory /articles/some/some 是文件或目录时才起作用,否则不会重写任何内容并会发生 404 错误。
    • 我的 htaccess 中有这个:RewriteRule ^some/(.*)$ ./some.php?id=$1 [L]
    猜你喜欢
    • 1970-01-01
    • 2017-11-12
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多