如何使用mod_rewrite阻止客户端访问,而不是从服务器访问?

时间:2013-06-03 06:05:45

标签: apache mod-rewrite

我的网络应用根据输入的网址分配用户帐户。它的行为类似于notepad.cc,其中每个唯一的URI都是不同的记事本。

但是如果用户输入我服务器上存在的文件,我不希望用户看到该文件的内容。这似乎很简单,但我无法实现这一点。我知道我可以使用mod_rewrite来阻止对文件的访问,但是一旦我这样做,服务器就无法访问它们。

例如,如果我有一个名为foo的文件,并且当用户输入www.mysite.com/foo时,我不想显示该文件的内容,而是重定向到index.html并生成一个新帐户或加载帐户(如果帐户已存在)。

如何使用mod_rewrite执行此操作?

编辑:我尝试按照建议使用IP白名单,但这也不起作用。

这是我到目前为止所做的。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.html [L]

RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.4$
RewriteRule ^(.+)$ index.html [L]

无论输入的URI是否指向现有文件,都会将所有内容重定向到index.html。但是,即使在192.168.1.4上进行测试,也不会加载index.html所必需的css和js文件。

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题但不会提供帮助:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.4$
RewriteRule ^(.+)$ index.html [L]

RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.4$
RewriteRule ^(.+)$ index.html [L]