2011-11-22 114 views
1

我試圖改變我的.htaccess文件,所以如果我去:修改.htaccess使URL變量=真正改變爲URL /變量?

http://www.example.com/index.php?login=true,它去http://www.example.com/login

我目前有這個代碼,它刪除index.php(這使得上面看起來像http://www.example.com/?login=true)。

RewriteEngine On 
#remove index.php 
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] 
RewriteCond %{THE_REQUEST} !/system/.* 
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L] 
RewriteCond %{THE_REQUEST} ^GET 
+0

我肯定會需要其他變體 - 基本上任何有東西=東西 – Jared

回答

0

我會設置你的重寫規則的其他方式:

RewriteEngine On 
RewriteRule ^login$ /index.php?login=true 

這樣,如果用戶瀏覽到http://yourserver.com/login實際使用的頁面http://yourserver.com/index.php?login=true,但第一個URL在瀏覽器中顯示。我認爲這是你想要達到的目標。

如果你真的需要做的是在你要的方向,你可以嘗試這樣的事:

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^login=true$ 
RewriteRule ^index\.php$ /login [L,R=301] 

的還有額外的查詢參數,則會失敗。

如果你想重定向到http://yourserver.com/index.phphttp://yourserver.com可以簡單地添加以下重寫規則:

RewriteRule ^index\.php$/[L,R=301] 
+0

他可能也需要它,或者他可能已經在他的PHP代碼中實現了所有。我懷疑他想要的是沒有斷開鏈接,所以如果某些鏈接到這些舊頁面中的某一個,他希望這個新的鏈接顯示出來。 –

+0

這個效果如何去http://yourserver.com/index.php?我應該澄清,但如果有人去http://yourserver.com/index.php,它應該只顯示http://yourserver.com – Jared

+0

請參閱我的編輯刪除index.php。 –

0

您需要檢查在的RewriteCond的QUERY_STRING。我認爲這應該這樣做:?

RewriteEngine On 
#remove index.php 
RewriteCond %{QUERY_STRING} ([^=]*)=true [NC] 
RewriteCond %{THE_REQUEST} !/system/.* 
RewriteRule ^index\.php /%1? [R=301,L] 

這應該重定向任何具有的index.php =真實/行動

+0

使用示例,'http://example.com/index.php?login = true'重定向到'http://example.com/login?login = true'。 – Jared

+0

確實,你應該添加一個?重定向到用像Sarel Botha這樣的新空字符替換現有的查詢字符串。我編輯了包含這個的答案。 (並簡化了一下規則)。 – AVee

0

嘗試在.htaccess以下在example.com的根目錄

RewriteEngine On 
RewriteBase/

#rewrite http://www.example.com/anything to http://www.example.com/index.php?anything=true 
RewriteCond %{REQUEST_URI} ^/([-a-zA-Z0-9]+)$ [NC] 
RewriteCond %1 !system [NC] 
RewriteRule . index.php?%1=true [L] 


#301 redirect requests for example.com/index.php?anything=true to example.com/anything 
RewriteCond %{REQUEST_URI} ^/index\.php$ [NC] 
RewriteCond %{QUERY_STRING} ^([^=]+)=true$ [NC] 
RewriteRule . /%1? [L,R=301]