我将网址末尾包含.html
的所有网页的地址替换为不包含.html
的地址。
.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¶m2=value2¶m3=value3
即此查询:
http://......net/part0/part1/part2/part3.html?param1=value1¶m2=value2¶m3=value3
应转换为此查询:
http://......net/part0/part1/part2/part3?param1=value1¶m2=value2¶m3=value3
我该怎么做?
我将非常感谢这些信息。谢谢大家。
答案 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]