我们的应用程序在PHP应用程序中使用重写规则,我们的开发人员将这些重写规则添加到我们的Apache VHosts文件中:
我已根据以下建议更新了我们的重写规则 .
目前我的VHosts文件配置如下所示:
RewriteCond%blog!-d RewriteRule ^ /([a-zA-Z0-9-,])/?$ /index.php?a=$1
RewriteCond%blog!-d RewriteRule ^ /([a-zA-Z0-9 - ,])/([a-zA-Z0-9-,])/?$ / index.php?a=$1&b=$2
RewriteCond%blog!-d RewriteRule ^ /([a-zA-Z0-9 - ,])/([a-zA-Z0-9-,])/([a-zA-Z0-9-,]) /?$ /index.php?a=$1&b=$2&c=$3
RewriteCond%blog!-d RewriteRule ^ /([a-zA-Z0-9 - ,])/([a-zA-Z0-9-,])/([a-zA-Z0-9-,]) /([a-zA-Z0-9-,])/?$ /index.php?a=$1&b=$2&c=$3&d=$4&e=$5
我目前能够成功访问所有其他应用程序选项卡,例如/ goods等 . 但我还是无法访问www.test.com/blog
它仍然将我重定向到我们的应用程序的主index.php页面 . 从重写日志:
[13 / Oct / 2009:17:08:41 - 0400] [www.test.com/sid#8d03d8][rid#b902d8/initial](1)通过/blog/wp-login.php [13 / 2009年10月:17:08:41 - 0400] [www.test.com/sid#8d03d8][rid#b942f8/initial](1)与/public_html/index.php合作[确定]
谢谢
2 回答
你在重写规则中尝试了很多东西 . 我建议你不要 .
我建议你将完整的字符串重写为
$_GET['url']
变量 . 你可以在你的代码中爆炸这个变量 . 这样您只需编辑一次vhost .RewriteCond
仍然在两个方向上计数(在上面和下面的例子中) .这些重写条件将检查文件或目录是否存在 . 如果不是,它将应用重写规则
如果条件不起作用,请尝试将条件置于每个
RewriteRule
之下,如下所示:尝试使用条件
这是一个玩条件和正则表达的问题 . 当URI以“/ blog /”开头时,这应该可以防止触发重写