ErrorDocument重定向到每个虚拟目录的不同页面

时间:2014-06-27 14:47:24

标签: .htaccess redirect rewrite http-status-code-404 errordocument

我试图用尽我所能的方式来看待这个问题,并且找不到这个特定问题的直接答案。我对一些友好的URL有一些.htaccess重写规则,并希望处理可能以各种方式发生的404错误。

首先,这里有几个重写规则:

RewriteRule ^newsite/designer/([A-Za-z0-9_.%&-]+).html/?$ newsite/catalog.php?m=$1 [NC,L,B,QSA]
RewriteRule ^newsite/search/([A-Za-z0-9_.%'&-]+)/?$ newsite/catalog.php?kw=$1 [NC,L,B,QSA]

我想在搜索设备/中使用404错误来指导404错误进行搜索/。每个人都有自己的目的地。但由于这些不是实际的目录,我不能只在一个单独的.htaccess文件中添加。

最终我希望所有其他404没有明确重定向到收集,如

ErrorDocument 404 /index.php

这可能吗?如何?

2 个答案:

答案 0 :(得分:0)

您可以在配置中使用<Location>部分:

<Location /newsite/designer>
    ErrorDocument 404 wherever
</Location>

但是,在很多情况下,您可能无法获得404(如果请求与RewriteRule匹配,并且您在脚本中找不到匹配项) ,取决于你的脚本的工作方式。

答案 1 :(得分:0)

您可以使用以下重写规则:

RewriteEngine On

# specific 404 handlers
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^newsite/search/ /newsite/404.php?base=search [L,NC,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^newsite/designer/ /newsite/404.php?base=designer [L,NC,QSA]

RewriteRule ^newsite/designer/([A-Za-z0-9_.%&-]+).html/?$ newsite/catalog.php?m=$1 [NC,L,B,QSA]
RewriteRule ^newsite/search/([A-Za-z0-9_.%'&-]+)/?$ newsite/catalog.php?kw=$1 [NC,L,B,QSA]

# generic 404 handling:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^newsite/designer/ /newsite/404.php [L,NC]