首页 > 解决方案 > 如何将长网址重定向到短网址,但将长网址提供给客户端?

问题描述

我网站的 URL 格式为...

www.website.com/index?t=abc123

...哪里abc123是 6 个字符的十六进制代码。如何使用 htaccess 将所有这样的地址重定向到...

www.website.com/abc123

...但仍以原始 URL 提供内容?

因此,例如,键入...

www.website.com/index/php?t=5f33ee

...将重定向到...

www.website.com/5f33ee

...但会提供来自...的内容

www.website.com/index.php?t=5f33ee

...没有用户被重定向。

到目前为止,我的 .htaccess 看起来像这样。据我了解,第一点将所有非 https 流量重定向到 https。第二个 RewriteRule 似乎可以从短网址提供内容。

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.website\.com$ [NC]
RewriteRule ^(.*)$ https://www.website.com/$1 [R=301]
RewriteRule ^([0-9a-f]{6})$ index.php?t=$1 [L]

标签: apache.htaccessmod-rewriteurl-rewriting

解决方案


解决了这些规则。

RewriteCond %{QUERY_STRING} !x
RewriteCond %{QUERY_STRING} t=([0-9a-f]{6})
RewriteRule ^/?index\.php$ /%1? [R=301,L]
RewriteRule ^/?([0-9a-f]{6})$ /index.php?x&t=$1 [QSA,L]

推荐阅读