2017-07-30 62 views
1

我的网站在Joomla上运行,安装在http://example.com/joomla,但我的网址仍然为http://example.com(我从根目录访问Joomla文件夹)。我觉得把joomla与我网站上的其他文件和文件夹分开是很好的做法,但访问者在URL中看到joomla并不重要,因为它更好地看到URL中只有东西与他们在我的网站上搜索的内容有关现场。 所以我想我们从URL中跳过joomla吧。由于Cloudflare的所有网址都必须是www-URL才能正常工作。从网址跳过Joomla

我能做到这一点得益于以下解决方案:

https://stackoverflow.com/a/35047905/5681573

我修改的版本:

RewriteEngine on 
RewriteCond %{THE_REQUEST} !joomla/ 
RewriteRule ^(.*)$ /joomla/$1 [L] 

在.htaccess:

根的.htaccess joomla /子目录:

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

在我的解决方案中,包含从非www URL到www-URL和从http到https的重定向。

在的Joomla /的configuration.php我设置$ live_site = “https://example.com” 和 改变了tmp和日志文件夹:

  • myserverpath /的public_html /的Joomla /管理员/日志
  • myserverpath /的public_html/joomla/tmp

一切看起来不错。现在,当我测试了这些结果:

但与非www网址一个问题:

的Joomla不从URL跳过。 以www开头的所有其他链接在URL中没有“joomla”正确显示。无论您是直接输入地址,还是通过网站上的链接或按钮到达,joomla都会从任何www-URL进一步跳过。就在那一刻,一个非www的URL被重定向到一个www-URL,它不起作用,并且URL中出现了“joomla”这个词。

而且还1个例外是管理URL,这也是一个问题,独一无二的,因为它无法从URL跳过的Joomla都使用WWW的URL以及非www-URL时:

我搜索了几个小时,没有结果。

有些事情,我试图解决这个问题:

  • 改变$ live_site为 ''(没有帮助)
  • 改变$ live_site为 'https://www.example.com'(没有帮助)
  • 改变$ live_site为' https://example.com'(没有帮助)
  • 改变RewriteBase中的Joomla/htaccess来RewriteBase /(变化都没有)
  • 改变RewriteBase中的Joomla/htaccess来RewriteBase /的Joomla /(没有变化)

一些有用的提示或可能的解决方案是非常受欢迎的。提前致谢。

关于前三行的解决答案,我发布此页面上的代码:因为该解决方案的答案

编辑我创造了只将其用于管理URL:

RewriteCond %{REQUEST_URI} (.*)administrator$ 
    RewriteCond %{REQUEST_URI} !/$ 
    RewriteRule ^(.*)([^/])$ http://%{HTTP_HOST}/$1$2/ [L,R=301] 

虽然成功从所有网址跳过joomla(请参阅解决方案的答案),对于我来说,问题仍然是为什么需要添加后面的斜杠(如上所示),以便为管理员URL解决此问题。否则,当您不添加这三行代码时,管理员URL将重定向到joomla/administrator,并在URL中显示joomla。 这是否与定义设置有关... ...谁知道...

回答

0

我很高兴地说我的问题的解决方案被发现。

对于任何人谁具有同样的问题,这里是解决方案:

  • 没有必须在Joomla /目录的htaccess的任何重写规则,只是没有在htaccess文件写的RewriteRules
  • 在根htaccess文件中注意添加rewriterules的位置:您应该将它们放在htaccess文件的TOP中。这些代码将这样的伎俩:

    # keep codes on top !!! 
    RewriteEngine On 
    RewriteCond %{REQUEST_URI} (.*)administrator$ 
    RewriteCond %{REQUEST_URI} !/$ 
    RewriteRule ^(.*)([^/])$ http://%{HTTP_HOST}/$1$2/ [L,R=301] 
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] 
    RewriteCond %{THE_REQUEST} joomla/ 
    RewriteRule ^joomla/(.*) https://www.%{HTTP_HOST}/$1 [R=301,L] 
    RewriteCond %{REQUEST_URI} !joomla/ 
    RewriteRule ^(.*)$ /joomla/$1 [L] 
    

感谢和信贷的巨大SiteGround支持团队(我的供应商),因为他们能够找到解决办法,使一切工作正常。