我试图用尽我所能的方式来看待这个问题,并且找不到这个特定问题的直接答案。我对一些友好的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
这可能吗?如何?
答案 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]