htaccess条件重定向到404页面

时间:2014-01-16 14:35:37

标签: apache .htaccess mod-rewrite redirect

应用了RewriteRule

RewriteRule ^([^/]*)/([^/]*)/basic/?$ /basic.php?player=$2&platform=$1 [NC]

转换

/basic.php?player=$2&platform=$1

漂亮的网址

/$1/$2/basic

然后应用

RewriteRule ^pc/([^/]*)/?$ /pc/$1/basic/ [NC,R=301]

用于重定向此

/$1/$2

到这个

/$1/$2/basic

问题是只输入此

/$1

它显示404找不到错误页面但输入

/$1/

重定向到

/$1/basic/basic

有没有办法显示404 Not Found错误页面

这是我的.htaccess

<IfModule mod_rewrite.c>
Options -Indexes
RewriteEngine on

#redirect -- /platform/player/ => /platform/player/basic
RewriteRule ^pc/([^/]*)/?$ /pc/$1/basic/ [NC,R=301]
RewriteRule ^ps3/([^/]*)/?$ /ps3/$1/basic/ [NC,R=301]
RewriteRule ^ps4/([^/]*)/?$ /ps4/$1/basic/ [NC,R=301]
RewriteRule ^xbox/([^/]*)/?$ /xbox/$1/basic/ [NC,R=301]
RewriteRule ^xone/([^/]*)/?$ /xone/$1/basic/ [NC,R=301]

#format -- /platform/player/page
RewriteRule ^([^/]*)/([^/]*)/basic/?$ /basic.php?player=$2&platform=$1 [NC]
RewriteRule ^([^/]*)/([^/]*)/weapons/?$ /weapons.php?player=$2&platform=$1 [NC]
RewriteRule ^([^/]*)/([^/]*)/vehicles/?$ /vehicles.php?player=$2&platform=$1 [NC]
RewriteRule ^([^/]*)/([^/]*)/awards/?$ /awards.php?player=$2&platform=$1 [NC]
RewriteRule ^([^/]*)/([^/]*)/kititems/?$ /kititems.php?player=$2&platform=$1 [NC]

ErrorDocument 400 /errordoc/error.php?error=400
ErrorDocument 401 /errordoc/error.php?error=401
ErrorDocument 403 /errordoc/error.php?error=403
ErrorDocument 404 /errordoc/error.php?error=404
ErrorDocument 500 /errordoc/error.php?error=500

1 个答案:

答案 0 :(得分:1)

/$1/与第一个匹配

RewriteRule ^pc/([^/]*)/?$ /pc/$1/basic/ [NC,R=301]

规则,因为您有可选的*/?模式,因此/pc/将匹配该正则表达式。改为将这些字段设为 required 字段:

#redirect -- /platform/player/ => /platform/player/basic
RewriteRule ^pc/([^/]+)/?$ /pc/$1/basic/ [NC,R=301]
RewriteRule ^ps3/([^/]+)/?$ /ps3/$1/basic/ [NC,R=301]
RewriteRule ^ps4/([^/]+)/?$ /ps4/$1/basic/ [NC,R=301]
RewriteRule ^xbox/([^/]+)/?$ /xbox/$1/basic/ [NC,R=301]
RewriteRule ^xone/([^/]+)/?$ /xone/$1/basic/ [NC,R=301]

*更改为+