正确的方法使用.htaccess重定向网址

时间:2018-01-11 03:25:40

标签: apache .htaccess redirect mod-rewrite

使用.htaccess重定向页面的正确方法是什么?

对于ex,我想将myweb.com/dorama/901110204/todome-no-kiss--paralel重定向到myweb.com/dorama/1101071510/todome-no-kiss--parallel

但是当我尝试访问旧链接时,请直接链接到myweb.com/dorama/1101071510/todome-no-kiss--parallel?cat=dorama&idp=901110204&post=todome-no-kiss--paralel

我的完整.htaccess文件

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

    #Redirect Dead Link
    Redirect 301 /dorama/901110204/todome-no-kiss--paralel http://www.piratefiles.org/dorama/1101071510/todome-no-kiss--parallel
    Redirect 301 /dorama/601181905/life-as-a-girl http://www.piratefiles.org/dorama/1101072233/life-as-a-girl
    Redirect 301 /dorama/801130021/todome-no-kiss http://www.piratefiles.org/dorama/1101071405/todome-no-kiss

    RewriteRule ^([A-Za-z]+)/([0-9]+)/([\w-]+)/?$    view.php?cat=$1&idp=$2&post=$3&%{QUERY_STRING}   [NC,L]
    RewriteRule ^category/([\w-]+)/?$ category.php?cat=$1&%{QUERY_STRING}   [NC,L]

    # To externally redirect /dir/abc.php to /dir/abc
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC]
    RewriteRule ^ /%1 [R=301,L,NE]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.+?)/?$ $1.php [QSA,NC,L]

</IfModule>

ErrorDocument 404 http://www.piratefiles.org/404.php

1 个答案:

答案 0 :(得分:1)

RewriteRule指令在重定向之前“运行”。因此,如果要强制重定向以特定顺序运行,则需要将它们全部转换为Rewrite指令。

将三个Redirect指令替换为:

RewriteRule ^dorama/(\d+)/(todome-no-kiss--paralel|life-as-a-girl|todome-no-kiss)$ http://www.piratefiles.org/$1/$2 [R=301]

根据需要调整,但这就是它失败的原因,以及建议的解决方案。

(此外,标准注释:如果您可以访问主服务器配置,则应尽可能避免.htaccess文件.htaccess文件适用于无法访问主配置的人。)