【问题标题】:htaccess redirects issue with old urlshtaccess 重定向旧网址的问题
【发布时间】:2021-04-10 04:31:38
【问题描述】:

我有一个用 php 制作的旧网站,所有 URL 都具有相同的架构

domain.de/index.php?<sitename>

第一个 URL 参数是站点名称。

现在我想重定向其中一些 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]

更新

【问题讨论】:

  • 另外,我认为删除 OP 选择的原始标签没有意​​义

标签: apache .htaccess url redirect mod-rewrite


【解决方案1】:

您能否尝试使用所示示例进行以下、编写和测试。请确保在测试 URL 之前清除浏览器缓存。

RewriteEngine ON
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^index\.php/? /%{QUERY_STRING}? [R=301,NC,L] 

【讨论】:

    【解决方案2】:

    完整的.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。无法匹配查询字符串。

    【讨论】:

      猜你喜欢
      • 2013-06-05
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多