这让我发疯了我想用htacces进行一些简单的重写但是无法让它工作。
我想要的第一个重定向是,如果有人只输入服务器URL(http://www.myserver.com),他将被重定向到某个/ var / www子文件夹,我完成了这个:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ ./some/application/$1 [QSA]
RewriteRule ^$ ./some/application/ [QSA]
并且正常工作......我想要的第二步是,如果有人进入(http://www.myserver.com/testpage),他会在此网址下重定向到/ var / www的某个不同子文件夹。
尝试了整个负载,但不能超过500内部服务器错误。 欢迎您给我输入。谢谢。
答案 0 :(得分:0)
当您添加另一个RewriteRule
时,您可能会遇到这样的事实:它将使用已经已经重写前两个规则的URI。这意味着如果您有以下内容,例如:
RewriteRule ^testpage(/.*)?$ ./some/other/app$1 [QSA]
它会失败,因为在这一点上你会传递它/some/application/testpage
。
您可以通过在现有重写中添加另一个条件来解决此问题:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/testpage/? ## this is the new condition
RewriteRule ^(.+)$ ./some/application/$1 [QSA]
RewriteRule ^$ ./some/application/ [QSA]
## here is the new rule
RewriteRule ^testpage(/.*)?$ ./some/other/app$1 [QSA]
除非您为规则指定[L]
标志,这将阻止任何进一步的规则运行,否则规则将是累积的,并根据之前任何规则的输出进行操作。