0

这让我发疯了我想用 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),他会在这个url下被重定向到/var/www的一些不同的子文件夹。

尝试了很多东西,但不能超过 500 个内部服务器错误。欢迎你给我意见。谢谢你。

4

1 回答 1

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]为规则指定标志,这将阻止任何进一步的规则运行,否则规则是累积的,并作用于任何先前规则的输出。

于 2013-07-04T16:22:57.547 回答