【问题标题】:mod-rewrite to ignore the subdomainmod-rewrite 忽略子域
【发布时间】:2012-11-23 19:51:10
【问题描述】:

我正在对漂亮的 URL 使用 mod-rewrite,旨在在域根目录上运行。工作正常,但现在我试图让它在子域上运行,它不断给出“500 Internal Server Error”。

子域会自动重定向到我的主机帐户上具有该名称的文件夹(sub.domain.com 显示 domain.com/sub/ 的内容)。它失败是因为这个请求已经被自动重写了,还是我可以简单地改变 htaccess 中的一些东西来解决子域?

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

【问题讨论】:

  • 这些规则究竟应该如何做你声称你想做的事?
  • 他们将“domain.com/what/ever/”之类的所有请求发送回 index.php,我可以在其中获取“what”和“ever”作为变量。当没有子域时它工作正常,但我坚持让它忽略子域。
  • 这里缺少很多配置。这条规则应该不足以做到你所说的那样。
  • 如前所述 - 添加您缺少的配置或明确说明,您希望帮助新配置,不要将我们与您的“当前和工作设置”混淆

标签: apache mod-rewrite


【解决方案1】:

联系您的 ISP 并检查他们是否将子域的 DocumentRoot 设置为 /domain/sub/ 目录(很可能),或者使用内部 RewriteRule 将流量引导到该目录(您可以通过 Chrome 或 Firefox + firebug 查看是否有外部重写/重定向,使用开发人员工具检查响应标头,在网络选项卡上)。如果他们设置了文档根目录,您将需要复制或符号链接 ALL 您希望通过子域访问的文件到 /domain.com/sub/ 目录,例如.htaccess、index.php、images、jscss 文件和子目录。如果他们正在使用内部重写,那么在现有的 .htaccess 文件中对您自己现有的内部重写进行快速调整就足够了,例如

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php  [L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多