2011-03-03 64 views
0

我已经搜索了一段时间,并有一个在调整此文件我自己去,我几乎在那里,但有一个我无法弄清的情况... 如何获得两个万维网。和一个正斜杠使用.htcaccess重定向到www。并添加尾随正斜杠

如果我输入spectrl.com,它将重定向到www.spectrl.com正确 - 添加www。
如果我在www.spectrl.com/ebaycalculator输入重定向到www.spectrl.com/ebaycalculator/正确的 - 添加/

但是,如果我在spectrl.com/ebaycalculator型我得到一个404错误时,它应该去www.spectrl .COM/ebaycalculator/

这是我的.htcaccess文件,保存在根:

RewriteBase/

Options +FollowSymlinks 

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://spectrl.com/$1/ [L,R=301] 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

感谢

回答

0

删除并重新上传.htaccess,然后清除缓存后,一切似乎按照预期使用我的原始代码在问题。
希望这会对别人有帮助。

0

@Kavi

尝试这种情况:

RewriteEngine On 

RewriteCond "%{HTTP_HOST}" "^(?:www\.)?(.*)" [NC] 
RewriteCond "%{REQUEST_URI}" "!/$" 
RewriteRule "(.*)"   "http://www.%1%/$1/" [R=301,L] 

RewriteCond "%{HTTP_HOST}" "!^www\."   [NC] 
RewriteRule "(.*)"   "http://www.%1/$1" [R=301,L] 

第一RewriteCond在参考%1捕获的主机名(没有任何前导www.)。这种情况总是会成功的。

第二个RewriteCond检查结尾的斜线;如果找不到,则会触发下一个RewriteRule

第一个RewriteRule使用捕获的www. -less主机名来构建重定向,其中包括www.和训练/

如果请求通过,则会触发第二节,因为它确实有有尾随/。它检查前导www.,并且做同样的重定向(仅在没有附加斜杠的情况下,因为已经有一个斜杠)作为第一节。

至少,应该是的工作方式;我没有测试过它。 :-)

+0

恐怕这不起作用。 追加的斜杠被添加,但www。部分是坏的,它重定向到www./ – Kavi 2011-03-03 23:31:42

+0

我恢复到我的原来的,现在也是这样做!非常奇怪的行为... – Kavi 2011-03-03 23:45:44

相关问题