소스 검색

#1091 User friendly URLs: redirect

Alex Trofimov 4 년 전
부모
커밋
f52119dfac
2개의 변경된 파일과 24개의 추가작업 그리고 0개의 파일을 삭제
  1. 22 0
      inc/classes/BxDolPage.php
  2. 2 0
      page.php

+ 22 - 0
inc/classes/BxDolPage.php

@@ -431,6 +431,28 @@ class BxDolPage extends BxDolFactory implements iBxDolFactoryObject, iBxDolRepla
         return $s . (!empty($aParts['query']) ? '&' . $aParts['query'] : '');
     }
 
+	/**
+     * Perform SEO redorect from regular pages if needed
+     * @param $sSeoLink SEO link
+     * @param $sPrefix prefix to add to the final URL, usually BX_DOL_URL_ROOT
+     * @return unSEO link string on success, false if no transform is needed
+     */
+    static public function seoRedirect ()
+    {
+        if (!getParam('permalinks_seo_links'))
+            return;
+
+        list($sPageLink, $aPageParams) = bx_get_base_url_inline();
+        $sLink = bx_append_url_params($sPageLink, $aPageParams);
+        if (0 === strpos($sLink, BX_DOL_URL_ROOT))
+            $sLink = substr($sLink, strlen(BX_DOL_URL_ROOT));
+
+        if ($sSeoLink = self::transformSeoLink ($sLink, BX_DOL_URL_ROOT)) {
+            header("Location:{$sSeoLink}", true, 301);
+            exit;
+        }
+    }
+
     /**
      * Display complete page
      */

+ 2 - 0
page.php

@@ -27,6 +27,8 @@ if(($sObject = bx_get('o')) !== false && ($sAction = bx_get('a')) !== false) {
     }
 }
 
+BxDolPage::seoRedirect();
+
 $oPage = BxDolPage::getObjectInstanceByURI('', false, true);
 if ($oPage) {