2017-05-25 174 views
0

我需要使用htaccess的讓所有的網頁?網頁勸到301永久重定向= 9的index.phphtaccess的重定向重定向的URL都與網頁的index.php

可以如何實現期望的

導人

例如-1

http://www.example.com/?page=9&option=com_news&view=list&Itemid=100&limitstart=840 

http://www.example.com/index.php&option=com_news&view=list&Itemid=100&limitstart=840 

或者說,例如2

http://www.example.com/?page=17&option=com_news&view=list&Itemid=100 

編輯 使用

RewriteEngine on 

RewriteCond %{THE_REQUEST} \?page=.+&(.+)\sHTTP [NC] 
RewriteRule^/index.php&%1? [L,R=301] 

但力曾作爲輸出

http://www.example.com/index.php&limitstart=840 
+0

你只是想刪除頁面? –

+0

yes刪除?頁面並添加index.php – Ruchika

+0

'index.php'是隱式的(假設你的DirectoryIndex是爲它設置的) - 在'/?something = something'和'/ index之間沒有實際區別。 PHP的東西=東西' – CD001

回答

2

假設你真的想/index.php?option=...而非/index.php&option=... - 只是在查詢字符串匹配:

RewriteEngine On 
RewriteCond %{QUERY_STRING} page=[^&]+&(.*) [NC] 
RewriteRule .* /index.php?%1 [L,R,QSD] 

但是,如果你真的/index.php&option=...更換重寫規則附:

RewriteRule .* /index.php&%1 [L,R,QSD] 


注:

RewriteRule .* /index.php?%1? [L,R] 
:無論哪種方式,這可能無法按預期如果你的Apache的版本比2.4以上有替換重寫規則的工作,如果page不是第放慢參數


[QSD]標誌只與2.4引入 - 不應該是必要的,因爲整個查詢字符串正在匹配。

+0

可以使用 - RewriteCond%{QUERY_STRING} page = [^&] +&(。*)[NC] RewriteRule。* /index.php?%1 [L,R = 301] – Ruchika

+0

' R'和'R = 301'的標誌,因爲默認的重定向是301 ...應該工作; 'QSD'應該丟棄重寫的URL中的任何額外的查詢字符串 - 因爲你匹配整個事情,它不應該是必要的,所以是的,你可以離開它。查詢字符串重寫時,我只是無限遞歸循環的偏執狂。 – CD001

1

您可以使用此:

RewriteEngine on 

RewriteCond %{THE_REQUEST} \?page=.+&(.+)\sHTTP [NC] 
RewriteRule^/index.php&%1? [L,R=301] 
+1

技術上這就是要求,但我懷疑你即將得到一個*沒有工作*評論,因爲查詢字符串正在開始'&' – CD001

+0

謝謝,但它的功能工作 - 輸出是http:/ /www.example.com/index.php&limitstart=840 – Ruchika

+1

似乎'。+'正在貪婪然後... – CD001