2015-04-22 94 views
0

這應該很簡單,但我卡住了。我想將example.com/something的所有請求重定向到example.com/index.php?code=something,但example.com/add-new應該轉到example.com/index.php?page=add-new 。Mod_rewrite重定向所有請求

我已經做了後者作爲

RewriteRule ^add-new$ index.php/?page=add-new [L] 

和它的作品,但我無法弄清楚如何做前者。我想最後的斜槓後一切重定向,即後example.com的index.php代碼=

回答

0

可以像這樣做:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?page=$1 [QSA,L] 
+0

這給我內部服務器錯誤 - (。*)?重寫規則^ $ index.php頁面= $ 1 [QSA,L] – johny332

+0

嘗試刪除'QSA'部分,所以你有'[L]' –

+0

沒有更多的服務器錯誤,但我得到「在這臺服務器上找不到請求的URL /index.php/」。如果我刪除了RewriteBase,我又得到了內部服務器錯誤 – johny332

0

我解決了這個問題,在某種程度上...

我的腳本使用5個字符的代碼,並通過試驗和錯誤,我發現這工作

RewriteRule ^(.{5})$ index.php/?code=$1 [L] 

現在,包含5個字符結束的每個URL被重定向,它應該,至少我的避風港現在還沒有發現問題。只重定向5個字符串並不是我想要的,但它現在完成了這項工作。

這裏是我完整的.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^add-new$ index.php/?page=add-new [L] 
RewriteRule ^(.{5})$ index.php/?code=$1 [L]