我在 bluehost 上有我的网站的生产副本和测试副本。每个网站都在 public_html 文件夹中自己的目录中,一个名为 prod,另一个名为 test。根据此处的 bluehost 知识库:https ://my.bluehost.com/cgi/help/347,您设置了一个 htaccess 文件以将进入 public_html 文件夹的请求重写到我的 prod 文件夹。到目前为止,这工作得很好。我最近注意到的一些事情是使用这些重写设置,如果您尝试从主网站文件夹中的另一个目录加载网站文件,例如 /prod/testfolder,最后没有正斜杠,它会将您重定向到 www.mysite.com/ prod/testfolder/ 而不是留在 www.mysite.com/testfolder。如果您像这样指定额外的正斜杠,则不会发生这种情况...... www.mysite.com/testfolder/
这是我的重写规则:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$
RewriteCond %{REQUEST_URI} !^/prod/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /prod/$1
RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$
RewriteRule ^(/)?$ prod/index.php [L]
在使用 htaccess 重写 url 时,我不是专家,但是我怀疑第一块重写规则是造成这种情况的原因。顺便说一句,为什么这会有所不同的一个例子是我在这个网站上设置了一个博客,如果你尝试访问 www.mysite.com/blog 上的博客,它会重定向到 www.mysite.com/prod/blog/首先使用 htaccess 屏蔽 prod 文件夹的目的。谁能告诉我应该如何解决这个问题并解释为什么会这样?谢谢!