【发布时间】:2010-01-10 18:21:18
【问题描述】:
我希望我的主域托管在子目录中(已完成此步骤),即当有人在后台键入 www.example.com/news 时,它将转到 www.example.com/subdirectory/新闻,但仍会显示为 www.example.com/news。
我已使用以下 bluehost 代码来完成此操作:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/subdirectory/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdirectory/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ subdirectory/index.php [L]
如果我输入 www.example.com/news/(注意尾部斜杠),此代码有效,但如果我只输入 www.example.com/news(不带斜杠),则此代码无效。任何想法为什么?
谢谢。
【问题讨论】:
-
您是否有一个名为
news的实际目录可能存在冲突? -
不,我所有的文件夹都在一个名为 public 的子目录中。这是一般结构:maindomain 有两个子文件夹(application 和 public)。在 public 里面有名为 news、glossary、about 等的子文件夹。所以没有实际的 www.maindomain.com/news,只有 www.maindomain.com/public/news
-
另外,澄清一下,如果我输入 www.mymaindomain.com/news 它的工作原理是它显示 www.mymaindomain.com/public/news 的页面,但它也显示公共 url 路径.
-
我最近也遇到了这个问题,并解决了,但不幸的是我不确定如何。希望这会给您带来希望...如果有帮助,我发现调试的最佳方法是删除所有不是 100% 需要的东西,然后从那里逐渐建立(反复试验...呸)。
标签: .htaccess mod-rewrite redirect