使用.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
答案 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文件适用于无法访问主配置的人。)