【问题标题】:How to use mod_rewrite in a subdomain's .htaccess?如何在子域的 .htaccess 中使用 mod_rewrite?
【发布时间】:2012-04-01 14:08:05
【问题描述】:

我有一个域(命名为)mydomain.com。 我添加了一个子域sub.mydomain.com。 (是另一个站点,两个站点没有任何关系)

我已将子域(使用 godaddy.com 的工具)映射到 /sub 目录。它适用于静态文件路径,例如。 http://sub.mydomain.com/js/script.js.php。 但是,我希望能够使用重写模块来获取http://sub.mydomain.com/js/script.js

我的 .htaccess 文件:

根目录下的.htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^sub.mydomain.com$
RewriteRule ^.*$ http://mydomain.com/sub%{REQUEST_URI} [L,P]

/sub 目录下的.htaccess:

RewriteEngine on
RewriteRule ^js/script\.js$ js/script.js.php [L]

(我尝试添加RewriteBase /sub/,但没有成功)。 好像 Apache 没有注意到 /sub 的 .htaccess

如何在子域的路径上进行重写工作?

【问题讨论】:

  • 保留RewriteBase:你需要它,因为重写是相对路径。
  • .htaccess 并不是真的在您机器上的/sub 目录中,是吗?您如何将 URL /sub 映射到路径名:是否有 Alias /sub /sub(URL /sub 转到机器路径 /sub)?处理这些域的<VirtualHost> 中的DocumentRoot 是什么?
  • 假设您的DocumentRoot/var/www/docroot。然后 URL /sub 将映射到 /var/www/docroot/sub,而不是 /sub。如果你想让/sub 去做/sub,这是你的docroot 的一个特殊例外;您可以使用Alias 安装它。
  • 感谢@Kaz 的回答。 DocumentRoot 是/var/chroot/home/content/26/7464126/html。映射是用godaddy.com的GUI工具(我用的托管服务)做的,看不到httpd.confrewrite.log也不知道有没有设置Alias...在@987654351下@目录我的意思是'DocumentRoot'/sub
  • 你真的应该拥有自己的服务器,无论是虚拟的还是其他的。

标签: apache .htaccess mod-rewrite subdomain


【解决方案1】:

已解决!

经过漫长而疲惫的调试和谷歌搜索后,我发现了一个 Apache 设置造成了麻烦:

我添加了Options -MultiViews,瞧,它有效

/////////////////////////////////////// p>

现在我的配置:

-根目录中没有 .htaccess。

-.htaccess 在根/sub:

DirectoryIndex site/index.php
Options -MultiViews
RewriteEngine on
RewriteRule ^site/js/script.js$ /site/js/script.js.php [L]

【讨论】:

    猜你喜欢
    • 2013-08-04
    • 1970-01-01
    • 2012-03-25
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 2012-05-13
    • 2014-02-11
    相关资源
    最近更新 更多