2015-10-13 240 views
3

我將URL末尾包含.html的所有頁面的地址替換爲不包含.html的地址。GET請求中的特定參數:請勿301重定向

.htaccess(相關部分):

... 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)\.html$ /$1 [L,R=301] 
... 

例如,而不是此地址:

http://......net/part0/part1/part2/part3.html 

我得到這個地址:

http://......net/part0/part1/part2/part3 

現在我需要做的不是如果GET請求包含一些請求,請執行重定向(我應該返回代碼200)具體的參數,如:

?param1=value1&param2=value2&param3=value3 

即此查詢:

http://......net/part0/part1/part2/part3.html?param1=value1&param2=value2&param3=value3 

應轉換到這個查詢:

http://......net/part0/part1/part2/part3?param1=value1&param2=value2&param3=value3 

我該怎麼辦呢?

我將非常感激這些信息。謝謝大家。

+0

恕我直言,如果你需要更改URL,你必須有一個重定向(這不一定是301) –

+0

感謝您發表評論! –

回答

1

您可以在DOCUMENT_ROOT/.htaccess文件中使用此代碼:

RewriteEngine On 
RewriteBase/

## hide .html extension 

# To externally redirect /dir/file.html to /dir/file 
RewriteCond %{THE_REQUEST} \s/+(.+?)\.html[\s?] [NC] 
RewriteRule^/%1 [R=302,L] 

## To internally redirect /dir/file to /dir/file.html 
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^(.+?)/?$ $1.html [L] 
+0

謝謝你的回答,anubhava!現在我會嘗試一下... –

+1

完美!同樣在OpenCart管理面板(服務器部分)中,我關閉了「用戶友好的URL」和「具有類別的產品的用戶友好URL」。現在一切正常。再次感謝你!... –