2015-10-13 78 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”。现在一切正常。再次感谢你!... –