2012-07-25 20 views
2

可能重複:
.htacces to create friendly URLs. Help needed動態網站,同時仍然SEO兼容

我想有創建一個網站,從通過PHP MySQL數據庫加載了內容,同時還針對搜索引擎進行了優化。

我已經考慮了一些方法,並正在尋找一些建議,最好的方式。

我網站上的用戶填寫表單並提交,保存在SQL數據庫中。我想有它使每個新頁面可以這樣來訪問:

  • domain.com/plugins/ 任何
  • domain.com/plugins/ anotherpagename

一些方法: 1. 腳本在提交表單時在plugins文件夾中生成靜態HTML頁面。當頁面被編輯(將會有一個編輯按鈕)時,HTML頁面會被更新的信息覆蓋。

  • domain.com/plugins/ 任何和domain.com/plugins/ anotherpagename將所有重定向到一個PHP腳本。
  • 但是,我不知道如何創建一個允許PHP腳本獲取頁面名稱的.htaccess,以便它可以搜索SQL數據庫並顯示正確的信息。

    我也不確定搜索引擎如何處理這些頁面?

    1. 也許其他人可以想出一個更好的方法呢?

    非常感謝您的幫助。

    +0

    只要每個頁面都有一個唯一的URL,那麼您在後端做什麼都沒有關係。該網址可以是「example.com/plugin?page = whatever」,這將非常容易設置,並且與其他任何網站一樣好。但你會想要與上面的鏈接URL重寫解決方案... – deceze 2012-07-25 10:47:34

    回答

    2

    你有幾個選擇如何做到這一點。符合您的需求將是最簡單的方法如下添加到您的.htaccess文件:

    RewriteEngine on 
    RewriteRule ^/plugins/(.*)$ /yourscript.php?plugin=$1 [L] 
    

    上述通所有請求/plugins/anything到yourscript.php,從中你可以訪問使用$_GET['plugin']的插件名稱。

    如果「插件」只是一個例子,並且您希望能夠使用/anything/anything--那麼您可能希望查看將所有請求傳遞給您的PHP腳本,然後解析所請求的URL。

    要做到這一點,你會使用這樣的事情在你的.htaccess文件:

    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /yourscript.php [L] 
    

    要打破下來,上面告訴Apache重寫所有請求該文件不存在(即圖像/ css/js等)到yourscript.php。

    從那裏,您可以通過$_SERVER['REQUEST_URI']訪問整個網址。你可以用字符串函數,正則表達式等來分解它。

    0

    爲什麼不建立一個實際的目錄?例如,

    domain.com/plugins/whatever domain.com/plugins/anotherpagename

    任何和anotherpagename都希望能目錄。 然後將html文件作爲index.html寫入目錄中。 不需要htaccess,您仍然可以使用與上述相同的網址進行訪問。

    0

    我不知道你是否在使用任何框架。我有解決方案使用codeigniter。同樣可以使用其他框架/核心PHP進行模擬。

    codeigniter特定溶液:

    1. 在配置/ routes.php文件定義

      $路線[ '插件/(:任何)'] = 「插件/ getPageFromDb/$ 1」; 在此之後,在瀏覽器中的url將是'domain.com/plugins/whatever'相同,但實際上控制將''任何'作爲參數擊中'插件'控制器的'getPageFromDb'功能。

    2. 在'getPageFromDb'函數中,您應該編寫代碼以基於參數'whatever'從db獲取頁面,並直接或通過視圖模板(取決於您的邏輯/場景)回顯輸出。

    而對於性能你可以保持HTML頁面的靜態版本,寫在「getPageFromDb」功能相對檢查,以決定是否從靜態或從數據庫獲取的頁面。

    考慮到url格式和格式良好的HTML渲染,它應該是搜索引擎友好的頁面。