将旧网址重定向到新网址但旧网址显示为新网址

时间:2015-09-25 09:14:06

标签: php .htaccess

打开:zalora-kupon-kode-diskon-voucher-promosi/

结果:http://www.situskupon.com/toko/zalora_indonesia-2.html?zalora-kupon-kode-diskon-voucher-promosi

你会找到旧的网址吗?

出了什么问题?

这是我的htaccess:

# Follow symbolic links in this directory.
Options +FollowSymLinks
IndexOptions +Charset=UTF-8
AddDefaultCharset UTF-8

RewriteEngine on

RedirectMatch 301 zalora-kupon-kode-diskon-voucher-promosi/ http://www.situskupon.com/toko/zalora_indonesia-2.html
RedirectMatch 301 lazada-kupon-kode-diskon-voucher-promosi/ http://www.situskupon.com/toko/lazada_indonesia-3.html
RedirectMatch 301 hostgator-kupon-kode-diskon-voucher-promosi/ http://www.situskupon.com/toko/hostgator-5.html

RewriteCond %{HTTP_HOST} ^situskupon\.com [OR]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9-_]+)/$ index.php?$1 [QSA,L]

## This should be a normal page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9-_]+)-(\d+).html$ index.php?pages=$2 [QSA,L]

## This should be a page from the theme
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9-_]+)-(\d+).html$ index.php?$1=$3 [QSA,L]

## This should be a page from theme 2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9-_]+).html$ index.php?tpage=$1 [QSA,L]

## This should be a plugin
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9-_]+).(php|html|xml)$ index.php?$1=$2&ext=$3 [QSA,L]

ErrorDocument 403 /index.php
ErrorDocument 404 /index.php
ErrorDocument 500 /index.php

1 个答案:

答案 0 :(得分:2)

问题是你正在混合mod_alias(RedirectMatch)和mod_rewrite(RewriteRule)指令并且存在冲突。不同的模块在不同的时间运行,这不一定与指令在.htaccess文件中出现的顺序相同。

首先会发生以下内部重写,因为这也与URL匹配:

RewriteRule ^([a-zA-Z0-9-_]+)/$ index.php?$1 [QSA,L]

然后您的RedirectMatch会触发,导致您看到的重定向。

解决方案...... 不要混合两个模块的重写/重定向。将mod_alias重定向更改为使用mod_rewrite:

例如:

RewriteRule ^zalora-kupon-kode-diskon-voucher-promosi/$ http://www.situskupon.com/toko/zalora_indonesia-2.html [R=301,L]

请注意,您需要清除浏览器缓存,因为缓存了301重定向。由于这个原因,首先使用302(临时)重定向进行测试会更容易。