2012-12-18 63 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。