此代码有效。它的作用是重写一个子域,以便显示一个特定的目录。基本上它允许存在通配符域。
目前正是这样做的。
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]
如何调整此代码以使其正常工作?
答案 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/-bob
到public_html/__sites/-bob
的目标路径..但忘记更新第一个条件:应为%{REQUEST_URI} !^/__sites/
。