【问题标题】:Sub-Domain forward to a URL using Mod_Rewrite?使用 Mod_Rewrite 将子域转发到 URL?
【发布时间】:2012-02-04 17:18:39
【问题描述】:

我目前正在使用 mod_rewrite,但希望使用特定的 URL 路径来使用子域名。 mod_rewrite 可以做到这一点吗?

目前网址是这样的:

http://domain.com/index.php?wiki/index/ -> http://domain.com/forum/wiki

如何获取网址

http://wiki.domain.com/forum/ 

什么时候wiki目录不存在?我不断收到 403,因为该目录不存在,因此被禁止。我目前有:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^wiki.domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^wiki.domain.com$
RewriteRule ^(.*)$ http://domain.com/wiki/index[R=301,L]

【问题讨论】:

    标签: .htaccess mod-rewrite subdomain http-status-code-403


    【解决方案1】:

    这是一个基于 mod_rewrite 的解决方案,只需将这些行放在你的 .htaccess 文件中:

    Options +FollowSymLinks -MultiViews
    RewriteEngine on
    
    RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
    RewriteRule ^forum/wiki/?$ http://wiki.domain.com/forum/ [R=301,L,NC]
    

    这会将http://domain.com/forum/wiki 重定向到http://wiki.domain.com/forum/

    【讨论】:

      【解决方案2】:

      提示如下:您实际上不需要进行重定向

      只需要 一个 处理两个域的虚拟主机。

      只需进行内部重写,它就会起作用。

      这是我自己的虚拟主机(处理 domain.com 和所有 *.domain.com)和你想要的(这可能不是 100% 有效,但是嘿,我给你两个提示之后这):

      <VirtualHost *>
      
          ServerAdmin webmaster@domain.fr
          DocumentRoot "/web/htdocs/domain/prod/website"
      
          ServerName domain.com
          ServerAlias *.domain.com
          ErrorLog "/web/logs/domain.error.log"
          CustomLog "|/opt/httpd/bin/rotatelogs /web/logs/domain/access_log.%Y-%m-%d-%H_%M_%S.log 5M" combined
      
          # your RewriteRules ()
          RewriteEngine On
      
          # Trace:
          # (!) file gets big quickly, remove in prod environments:
          RewriteLog "/web/logs/domain.rewrite.log"
          RewriteLogLevel 9
      
          # Your RewriteRules ()
          RewriteCond %{HTTP_HOST} ^wiki.domain.com$
          RewriteRule ^/forum/(.*) /wiki/index.php?wiki/index$1 [QSA,L]
      
      </VirtualHost>
      

      两个提示:

      如果您不在托管环境中(= 如果它是您自己的服务器并且您可以修改虚拟主机,而不仅仅是 .htaccess 文件),请尝试使用 RewriteLog 指令:它可以帮助您跟踪下来这样的问题:

      # Trace:
      # (!) file gets big quickly, remove in prod environments:
      RewriteLog "/web/logs/mywebsite.rewrite.log"
      RewriteLogLevel 9
      RewriteEngine On
      

      我最喜欢的检查正则表达式的工具:

      http://www.quanetic.com/Regex(别忘了选择 ereg(POSIX) 而不是 preg(PCRE)!)

      【讨论】:

        猜你喜欢
        • 2012-01-22
        • 1970-01-01
        • 2010-11-02
        • 1970-01-01
        • 2012-05-13
        • 2012-01-27
        • 2011-04-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多