当index.php处理路径时,子目录的404不同

时间:2016-01-17 09:37:44

标签: .htaccess redirect drupal http-status-code-404 subdirectory

我希望/blog/anything-that-doesn't-exist重定向到/blog,而其他任何404都由Drupal处理。

我的htaccess目前有:

ErrorDocument 404 /index.php

所以一切都由Drupal处理。是否有可能具有特定于子目录的404规则,但是从根目录htaccess设置该规则? /blog/子目录是由Drupal生成的,所以我不能在那里放置一个重写的htaccess。

1 个答案:

答案 0 :(得分:0)

您可以在Root / .htaccess文件中使用以下代码:

 RewriteEngine On


#If /blog/foo is not a directory
RewriteCond %{DOCUMENT_ROOT}/blog/$1 !-d
#And /blog/foo is not a file
RewriteCond %{DOCUMENT_ROOT}/blog/$1 !-f
#Then redirect /blog/foo to /blog
RewriteRule ^blog/(.+)$ /blog/ [NC,L,R]

值得注意的是,RewriteRule和ErrorDocument指令的执行时间不同。 RewriteRule指令在ErrorDocument指令之前执行,因此任何对/ blog / bad_url的请求都将由上面的规则处理,所有其他404请求将由ErrorDocument处理。