2010-04-07 94 views
0

我有一台服务器,我只能使用.htaccess配置httpd,无法访问全局配置。我想重写几乎所有不存在的index.php路径,所以我做了类似的操作:.htaccess愚蠢的问题

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?path=$1 [L,QSA] 

这就好。但我想要做的另一件事是阻止访问我保存PHP文件的路径(我不能将它们存储在其他地方),例如/ php。我想任何事情开始/ PHP重写到index.php路径= PHP ...所以我不喜欢的东西:

RewriteCond %{REQUEST_URI} ^/php.* 
RewriteRule ^(.*)$ /index.php?path=$1 [L,QSA] 

而这也将工作确定,如果我不得不进入全局配置。在每个目录配置的情况下,当我访问/ php时,它会将其重写为index.php?path = php,并在此之前放置目录名称:/php/index.php?path=php。我阅读文档,并意识到它使用内部重定向时使用每个目录配置。我怎样才能避免这种行为?

回答

0

可以使用Deny from all代替mod_rewrite的,但如果你真的想要的话,你可以强制为noteed在mod_rewrite文档外部重定向:

如果替换字符串 的http://开头,然后目录前缀 将不会被添加

+0

结果是好的,但我想避免外部重定向。另外,我宁愿使用拒绝所有选项,但我想将它从外部世界隐藏起来,而不仅仅是禁止它。 Thnx – justnoone 2010-04-07 19:42:06

+0

您可以尝试'RewriteBase',但我仍然不知道它可以用于什么。 – wRAR 2010-04-07 19:43:49

+0

我也尝试过,但它似乎在重写之前使用它,在测试URL时它会添加前缀... – justnoone 2010-04-07 19:47:16