Regex htaccess从顶部重定向到子目录

Regex htaccess从顶部重定向到子目录,regex,apache,.htaccess,redirect,Regex,Apache,.htaccess,Redirect,我有一个具有以下(简化)布局的web服务器: 我想使用htaccess将每个请求“重定向”到www.mydomain.com/page到www.mydomain.com/www/page.php 我尝试了以下方法: Options +FollowSymlinks RewriteEngine On RewriteRule ^(.*)$ www/$1.php 但它会产生500个内部服务器错误 出于调试目的,我创建了一个www/test.php页面,该页面回显每个GET变量,并修改了my.htacc

我有一个具有以下(简化)布局的web服务器:

我想使用htaccess将每个请求“重定向”到www.mydomain.com/page到www.mydomain.com/www/page.php

我尝试了以下方法:

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^(.*)$ www/$1.php
但它会产生500个内部服务器错误

出于调试目的,我创建了一个www/test.php页面,该页面回显每个GET变量,并修改了my.htaccess:

只是为了检查我是否匹配正确的东西。 对www.mydomain.com/somepage执行请求时的预期行为是page=somepage,而不是I get page=www/get.php


为什么会有这种行为?我如何才能完成我需要的任务?

您必须排除要重写的路径:

RewriteRule ^((?!www).*)$ www/test.php?page=$1 [NC,L]

否则会出现无限循环错误,因为www/test.php也与重写模式(.*)

如果遇到内部服务器错误,请始终查阅日志文件。总是。在这种情况下,它会暗示无限递归。附加信息:它只会停止重写,url在尝试应用所有规则后保持不变。在第二种情况下,
www/test.php?page=www/test.php
重写到同一个url。这样做成功了,现在对我来说是有意义的。这是一个我没有想到的无限循环。
RewriteRule ^(.*)$ www/test.php?page=$1
RewriteRule ^((?!www).*)$ www/test.php?page=$1 [NC,L]