2014-06-19 170 views
0

我正在從數據庫提供內容的動態php網站上工作。目前我有四個PHP文件 - index.php,a.php,b.PHP,c.php。這些服務的結果來自數據庫,與請求的URL相同。例如。URL基於請求的URL中的尾部斜槓重寫

  1. 如果請求的網址example.com然後index.php服務的結果。

  2. 如果請求的URL是example.com/xyz.html然後a.php第一確切xyz從URL,然後供應導致對其xyz。 [重寫example.com/a.phpexample.com/xyz.html]

  3. 如果所請求的URL是example.com/x/y.html然後b.php第一萃取xy從所請求的URL,然後供應導致對其y頁[重寫example.com/a.php/b.phpexample.com/x/y.html]。

  4. 如果請求的URL是example.com/x/y/z.htmlc.php第一提取xyz從URL,然後服務導致的z頁(重寫example.com/a.php/b.php/c.phpexample.com/x/y/z.html)。

總之,如果請求的URL是 -

example.comexample.com/ - 那麼結果將通過index.php送達

example.com/anything.html - 那麼結果將通過a.php

example.com/anything/anything.html送達 - 那麼結果將由b.php

example.com/anything/anything/anything.html - 然後結果將被解析c.php

那麼我怎樣才能實現這樣的功能使用URL重寫?請回復.htaccess這樣的功能代碼。

+1

重寫規則^ $的index.php URL = $ 1 [QSA,L] 創建將處理您的URL請求的功能, ?開關語句或任何你想要的算法 –

+0

@ Semi-Friends謝謝!我需要更多的解釋或htaccess代碼。 – ravi

回答

0

將這個代碼在你DOCUMENT_ROOT/.htaccess文件:(。*)

DirectoryIndex index.php 

RewriteEngine On 

RewriteRule ^(?!(a|b|c)\.php$)[^/.]+\.php$ /a.php [L,NC] 

RewriteRule ^[^/]+/[^/.]+\.php$ /b.php [L,NC] 

RewriteRule ^[^/]+/[^/]+/[^/.]+\.php$ /c.php [L,NC] 
+0

在所有頁面上獲得「500內部服務器錯誤」。 – ravi

+0

檢查更新後的規則並告訴我你在Apache error.log中看到了什麼錯誤 – anubhava

+0

[Thu Jun 19 13:51:04 2014] [alert] [client 127.0.0.1] C:/wamp/www/.htaccess:無效的命令「RewriteEngine」,可能是拼寫錯誤或未包含在服務器配置中的模塊定義的。 – ravi