2017-01-19 24 views
0

目前我的.htaccess代碼將{REQUEST_URI}作爲$_GET數組發送到load.php,其中該頁面調用請求的控制器。對於搜索引擎優化的目的,我想刪除一部分的網址,而無需更改發送到load.php$_GET陣列。

例如,如果我有:

domain.com/products/product-name 

我想的URL顯示:

domain.com/product-name 

,而不改變被髮送到所述load.php可變$_GET

任何幫助將不勝感激。我已經包含了我當前的代碼。

RewriteEngine on 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 

澄清:

$_GET[0]作爲其引導應用開闢適當的文件「控制器」的變量。因此,我無法將'產品'硬編碼爲$_GET[0],因爲這會不斷打開controllers/products.php而不是合適的文件。

回答

1

我想的URL顯示:

domain.com/product-name

不改變$ _GET變量, 發送到load.php。

要做的事情唯一的方法是在重寫代碼的替換字符串中用products對URL的一部分進行硬編碼。見下文。然後,URL load.php將始終收到products/somefile

RewriteEngine on 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.*)$ index.php?url=products/$1 [L,QSA] 

更新:如果您想要替換一個路徑/控制器,此解決方案將工作。

你必須引用控制器一些如何。所以如果你在請求中沒有控制器,那麼沒有什麼可以轉發給$ _GET變量。 PHP不會知道請求應該去的地方。在路徑中做這件事並沒有什麼錯,它不應該影響你的搜索引擎優化。

+0

好的。所以我試過了,但我不希望每個$ _GET變量都有產品。有沒有我可以使用的if語句?我試圖尋找一個,但無法弄清楚... – Blaise

+0

你說,不改變$ _GET變量。你想要做什麼?請更新您的問題。 –

+0

完成。基本上$ _GET [0]服務器作爲控制器變量,並指示程序打開正確的文件。因此,我不能在$ _GET [0] – Blaise