2012-12-18 62 views
2

我最近开始在Joomla项目。我不得不从它删除index.php(这是配置设置中的某个复选框)。我发现如何去做。目前真正的所有网址都是在没有index.php的情况下创建的。Joomla没有index.php(301重定向)

但是,我可以直接输入网址http://mywebsite.com/index.php/article-name,它不会改写为http://mywebsite.com/article-name。 如果我有一个菜单,然后URL正确创建(http://mywebsite.com/article-name - 所以没有index.php)。

所以问题是: 如何创建htaccess的网站与index.php重定向到网站没有index.php。

回答

2

既然你在网络内部路由的东西到index.php,你必须来匹配实际的请求:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /index\.php/[^\ ]+ 
RewriteRule ^index\.php/(.*)$ /$1 [L,R=301] 
1

转到全局配置页面,并做出以下更改:

  1. 打开SEF(搜索引擎友好)网址选项。
  2. 说是到Apache的mod_rewrite
  3. 说没有添加后缀到URL
  4. 说不为Unicode别名
  5. 说不包括在页面标题的网站名称。

还将htaccess.txt更改为.htaccess。现在,在“重定向到此处”的位置添加新的重定向代码。

代码

####开始 - 301重定向

的RewriteCond%{THE_REQUEST}^[AZ] {3,9-} \ /([^ /] +/)*(索引|主页)的.html \ HTTP/

重写规则^(([^ /] + /?)*)(指数|?家).HTML $ http://www.example.com/ $ 1 [R = 301,L]

的RewriteCond%{THE_REQUEST}!^ POST

的RewriteCond%{THE_REQUEST}^[AZ] {3,9-} \ /([^ /] + /)*的index.php \ HTTP/

的RewriteCond %{SERVER_PORT}> s ^(443>(s)| [0-9] +> s)$

RewriteRule ^(([^ /] + /)*)index.php $ http%2:/ /www.example.com/$1 [R = 301,L]

的RewriteCond%{HTTP_HOST}!^(www.example.com)?$

重写规则http://www.example.com/ 1 $ [R = 301,L]

####完 - 301重定向

注(*):与您的网站的名字删除www.example.com。