2012-01-05 60 views
0

的http:// domain.com/index.php - > HTTP:// domain.com/ - OKhtaccess的 - 刪除的index.php,但不是的index.php時的index.php Z = ABC

http:// domain.com/index.php?z=abc - > http:// domain.com/index.php?z=abc - 不行,保持不變。 這個工程使用下面的代碼:

RewriteEngine On 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/ 
RewriteRule ^(.*)index\.php$ /$1 [R=301,L] 

如何修改這個代碼,以便

http:// domain.com/index.php?z=abc -> http:// domain.com/?z=abc 

回答

1

Apache會自動照顧查詢字符串。所有你需要的是這樣的:

RewriteEngine on 
RewriteRule ^index.php/[L,R=301] 
+0

作品修改完善的RewriteCond以及!謝謝! – Haradzieniec 2012-01-07 08:57:59

+0

[R = 301]會中斷POST請求(表單數據丟失),但將其保留不會影響地址欄。出於這個原因,如果(永遠)發佈到索引,你會想避免做這種重寫。 – Umbrella 2012-01-11 21:49:00

+0

@傘大多數服務器默認爲301,無論如何。而且由於他不希望'/ index.php'顯示在地址欄中,我懷疑他會發布到它。 – kba 2012-01-11 22:25:39

1

嘗試以下

RewriteEngine On 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php(\?[^\ ]*)?\ HTTP/ 
RewriteRule ^(.*)index\.php$ /$1 [R=301,L] 
+0

謝謝!!!!!! – Haradzieniec 2012-01-07 08:53:03