如何解决htaccess 使用旧网址重定向问题
我有一个用 PHP 制作的旧网站,所有 URL 都具有相同的架构
domain.de/index.PHP?<sitename>
现在我想重定向其中一些 URL,正确的重定向如何只重定向这些页面中的一个而不是所有页面
提前致谢。
我试过了:
Redirect 301 /index.PHP?impressum /impressum
示例:
旧网址:/index.PHP?oldurl
新网址:/newurlWithCompletlyDifferentURLName
更新:
# BEGIN wordpress
# Die Anweisungen (Zeilen) zwischen „BEGIN wordpress“ und „END wordpress“ sind
# dynamisch generiert und sollten nur über wordpress-Filter geändert werden.
# Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.PHP$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.PHP [L]
</IfModule>
# END wordpress
RewriteCond %{THE_REQUEST} \s/+index\.PHP\?impressum1\s [NC]
RewriteRule ^ /impressum? [R=301,L]
解决方法
您能否尝试使用所示示例进行以下操作、编写和测试。请确保在测试您的网址之前清除浏览器缓存。
RewriteEngine ON
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^index\.php/? /%{QUERY_STRING}? [R=301,NC,L]
,
完整的 .htaccess:
# BEGIN WordPress
# Die Anweisungen (Zeilen) zwischen „BEGIN WordPress“ und „END WordPress“ sind
# dynamisch generiert und sollten nur über WordPress-Filter geändert werden.
# Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} \s/+index\.php\?impressum1\s [NC]
RewriteRule ^ /impressum? [R=301,L]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
之前的回答:
这可能适用于您的站点根目录 .htaccess:
RewriteEngine On
# all rules that have different redirect URL
RewriteCond %{THE_REQUEST} \s/+index\.php\?oldUrl1\s [NC]
RewriteRule ^ /newurl1? [R=301,L]
RewriteCond %{THE_REQUEST} \s/+index\.php\?oldUrl2\s [NC]
RewriteRule ^ /newurl2? [R=301,L]
# a generic rule that will redirect /index.php?foobar to /foobar
RewriteCond %{THE_REQUEST} \s/+index\.php\?(\S+)\s [NC]
RewriteRule ^ /%1? [R=301,L]
请理解 Redirect
指令不支持正则表达式,它只匹配起始 URI。无法匹配查询字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。