1

在我的网站中,有三到四种类型的 URL(每种可以有不同的参数来表示不同的页面)。它们就像http://foo.com/users/username, http://foo.com/questions/question_text,http://foo.com/new_question等。

mod_rewrite用来重写来自客户端的 URL,即http://foo.com/users/username变成http://foo.com/users?username=username,然后这个请求转到http://foo.com/users,剩下的就交给它了。

现在我想要这样,除了这 3-4 个预定义模板,如果有任何其他请求,比如http://foo.com/abracadabra,用户应该被重定向到主页http://foo.com/。有没有这样的指令可以实现这个包罗万象的重定向?

4

1 回答 1

1

很长的路要走:

RewriteEngine On
# If the request isn't actually a file
RewriteCond %{REQUEST_FILENAME} !-f
# If the request isn't actually a directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request isn't specifically for favicon.ico (though the first 
# RewriteCond should take care of this, it's in the first .htaccess file
# I grabbed to verify)
RewriteCond %{REQUEST_URI} !=/favicon.ico
# Change the request from whatever the user entered to "/"
RewriteRule ^(.*)$ /

但你真的不应该这样做。如果您实际提供 404 错误,并且如果请求的页面不存在,则提供自定义错误页面会更友好。此外,如果您这样做并且您的网站必须通过第三方安全扫描,您将为报告生成大量误报安全漏洞。

于 2012-09-21T20:30:41.437 回答