我有一台服务器,我只能使用.htaccess配置httpd,无法访问全局配置。我想重写几乎所有不存在的index.php路径,所以我做了类似的事情:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]
没关系。但我想做的另一件事是阻止访问我保留PHP文件的路径(我不能将它们存储在其他地方),例如/ php。我希望以/ php开头的任何东西都重写为index.php?path = php ...所以我做了类似的事情:
RewriteCond %{REQUEST_URI} ^/php.*
RewriteRule ^(.*)$ /index.php?path=$1 [L,QSA]
如果我可以访问全局配置,那也可以正常工作。在每个目录配置的情况下,当我访问/ php时,它将其重写为index.php?path = php,然后将目录名放在:/php/index.php?path=php之前。我阅读文档,并且我意识到当使用每个目录的混淆时它使用内部重定向。我该如何避免这种行为?
答案 0 :(得分:0)
您可以使用Deny from all
代替mod_rewrite,但如果您真的需要,可以按照mod_rewrite
文档中的说明强制执行外部重定向:
如果替换字符串以。开头 http://,然后是目录前缀 将不会被添加