在我的网站中,有三到四种类型的URL(每种类型可以有不同的参数来表示不同的页面)。它们就像http://foo.com/users/username
,http://foo.com/questions/question_text
,http://foo.com/new_question
等。
我使用mod_rewrite
重写来自客户端的网址,即http://foo.com/users/username
变为http://foo.com/users?username=username
,然后此请求转到http://foo.com/users
,剩下的就是http://foo.com/abracadabra
。
现在我想要这样,除了这3-4个预定义的模板,如果有任何其他请求,如http://foo.com/
,用户应该被重定向到主页{{1}}。有没有这样的指令可以实现这个catchall重定向?
答案 0 :(得分: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错误和自定义错误页面(如果请求的页面不存在),则会更友好。此外,如果您这样做并且您的网站必须通过第三方安全扫描,那么您将为报告生成大量误报安全漏洞。