【发布时间】:2010-08-24 13:47:10
【问题描述】:
我最近对我网站的文件夹结构进行了一些小改动,现在我的一个重写器似乎坏了。
过去,我在 public_html 中有一个 /mydomain.com/ 文件夹,其中设置了一个 wiki。在同一个文件夹中还有一些我用于子域访问的文件夹,例如成员和文件。
旧设置:
#www to main website
RewriteCond %{HTTP_HOST} ^www.mydomain.com$
RewriteRule ^(.*)$ mydomain.com/$1 [L]
#subdomain to folder (members. => /members/, files. => /files/, etc)
RewriteCond %{HTTP_HOST} ^(.*).mydomain.com$
RewriteCond %{HTTP_HOST} !^www.mydomain.com$
RewriteRule ^(.*)$ mydomain.com/%1/$1 [L]
相当简单,当我输入 files.mydomain.com/myfile.zip 时,它没有任何问题。
最近我在我的wiki上安装了几种语言(这实际上与问题无关,只是为了说明情况)并制定了以下规则:
#to the right language folder (www = en)
RewriteCond %{HTTP_HOST} ^(www|nl|es).mydomain.com$
RewriteRule ^(.*)$ mydomain.com/%1/$1 [L]
#subdomain to folder (members. => /members/, files. => /files/, etc)
RewriteCond %{HTTP_HOST} ^(.*).mydomain.com$
RewriteCond %{HTTP_HOST} !^www.mydomain.com$
RewriteRule ^(.*)$ mydomain.com/misc/%1/$1 [L]
显然,在 mydomain.com/www/、mydomain.com/es/ 等中设置了不同语言的 wiki。这非常有效。 问题在于第二部分,即子文件夹。在同一个 mydomain.com/ 文件夹中,我创建了一个 misc/ 文件夹来存储所有 misc 内容(包括子域文件夹)。我认为只需在路径中添加 /misc/ (就像我在第一条规则中添加了语言文件夹名称)就可以让它工作..但它给了我一个 500 错误。 旧设置和新设置在任何可能与第二条规则冲突的文件夹中都没有任何 .htaccess 行。
谁能发现错误,或告诉我如何系统地检查此设置是否存在错误?
【问题讨论】:
-
我希望您的旧设置和新设置都会生成 500 错误。您的旧设置是否在关闭
mod_rewrite的子目录中包含.htaccess文件? -
嗯,不,据我所知,只有一些特定于 mediawiki 的规则(仅当 /wiki/ 包含在 URI 中时才适用)。为什么会出现错误?
-
您的规则将导致无限重定向循环。在您的 Apache 错误日志中,它可能会说“由于可能的配置错误,请求超出了 10 个内部重定向的限制”?
-
然而第一条规则并没有给出错误。你建议如何尝试解决这个问题?
标签: .htaccess mod-rewrite