【问题标题】:Specific parameters in GET- request: don't doing 301 redirectGET-request中的具体参数:不做301重定向
【发布时间】:2016-01-10 22:12:43
【问题描述】:

我将URL末尾包含.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&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

我该怎么做?

我将非常感谢您提供的信息。谢谢大家。

【问题讨论】:

  • 恕我直言,如果您需要更改 URL,您必须有一个重定向(不一定是 301)

标签: regex .htaccess mod-rewrite redirect


【解决方案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]

【讨论】:

    猜你喜欢
    • 2016-10-09
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    相关资源
    最近更新 更多