改变htaccess路径?

时间:2011-08-25 15:09:55

标签: .htaccess

此代码有效。它的作用是重写一个子域,以便显示一个特定的目录。基本上它允许存在通配符域。

目前正是这样做的。

bob.domain.com转到public_html/-bob

我希望它转到public_html/__sites/-bob。我在底部尝试了下面的代码,但没有任何乐趣。帮助将不胜感激。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/-
RewriteCond %{HTTP_HOST} ^([^\./]+)
RewriteCond %{DOCUMENT_ROOT}/-%1 -d
RewriteRule ^(.*)$ -%1/$1 [L] 

然而,它没有做我想做的事。

而不是重定向到root/-directory

我希望它重定向到root/__sites/-directory

我试过这个,但是我收到服务器错误

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/-
RewriteCond %{HTTP_HOST} ^([^\./]+)
RewriteCond %{DOCUMENT_ROOT}/__sites/-%1 -d
RewriteRule ^(.*)$ __sites/-%1/$1 [L] 

如何调整此代码以使其正常工作?

1 个答案:

答案 0 :(得分:1)

据我所知,您有500个内部服务器错误。如果您检查错误日志,将会详细说明导致错误日志的原因。我很确定它会超出“迭代次数”或类似的东西。

考虑到我的假设是正确的,这将是正确的规则:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} !^/__sites/
RewriteCond %{HTTP_HOST} ^([^\./]+)
RewriteCond %{DOCUMENT_ROOT}/__sites/-%1 -d
RewriteRule ^(.*)$ __sites/-%1/$1 [L]

由于在指定[L]标志时没有停止重写这一事实导致的错误 - 它只会进入下一次迭代..您的当前规则将再次执行..再次执行。

您已更新从public_html/-bobpublic_html/__sites/-bob的目标路径..但​​忘记更新第一个条件:应为%{REQUEST_URI} !^/__sites/