打开: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
答案 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
(临时)重定向进行测试会更容易。