2013-02-07 135 views
0

我不知道有关htacess和modrewrite的大量数据,所以我发现自己处于另一个困境中,正在接近这个新的区域。htaccess ModRewrite到根目录

我会在2个不同的问题上分开我的调查,以便让答案成为主题,并更好地针对寻找自己问题解决方案的用户。

让我先从一个应该很容易但我可能忽略的问题开始;

RewriteCond %{http_host} ^domain.com.au [nc] 
RewriteRule ^(.*)$ https://www.domain.com.au/$1 [R=301,NC] 

正如你所看到的我想要www。在URL中,我也强制使用PHP脚本使用https,但认为只需使用它来处理两者,以便用户不必等待两个转发发生。

上面的代码似乎工作正常,但它会把你带到域的根。

http://domain.com/index.php?page=hello 
http://domain.com/dir/index.php?page=hello 
http://domain.com/dir17/sub/index.php?page=hello 

上述所有的URL 3将重定向到https://www.domain.com/index.php?page=hello

显然是与modrewrite的目录深度的事,但我不知道如何确保本地它适用于每一个目录,而不是直接回到根部。

我一如既往地感谢您的帮助,惊人的一群人本网站:)上

+0

嗯,你在这里显示的是表示你可能有一些其他的重写规则干扰这个。您提供的规则应该与您期望的完全相同。请在您的目录中查找其他.htaccess文件,并确保您在上面发布的规则位于_root_目录的.htaccess中。 –

+0

我目前使用它在一个隐藏的子目录中进行测试,因为这部分网站尚未上线,它位于THAT目录的根目录中,但不在网站根目录。这是否与这个规则在这个场景中有所不同? – Tarquin

+0

除了你的回答,我把所说的规则放在根目录下,它只是引起怪异的401错误,好像它只是在和我搞砸: – Tarquin

回答

0

这是一个有点晚,但意识到它从来没有一个答案公布。不过,经过大量研究,我确实解决了这个问题。

RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

我当然希望这可以帮助别人。