Apache ReWrite规则停止我们应用程序的部分

时间:2009-10-13 15:27:51

标签: php apache mod-rewrite

我们的应用程序在PHP应用程序中使用重写规则,我们的开发人员将这些重写规则添加到我们的Apache VHosts文件中:

我已根据以下建议更新了我们的重写规则。

目前我的VHosts文件配置如下所示:

RewriteCond%博客!-d RewriteRule ^ /([a-zA-Z0-9 - ,] +)/?$ /index.php?a=$1

RewriteCond%博客!-d RewriteRule ^ /([a-zA-Z0-9 - ,] +)/([a-zA-Z0-9 - ,] +)/?$ /index.php?a=$1&b=$2

RewriteCond%博客!-d RewriteRule ^ /([a-zA-Z0-9 - ,] +)/([a-zA-Z0-9 - ,] +)/([a-zA-Z0-9 - ,] +)/?$ /index.php?a=$1&b=$2&c=$3

RewriteCond%博客!-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 / Oct / 2009:17:08:41 - 0400] [www.test.com/sid#8d03d8][rid#b942f8/initial](1)与/public_html/index.php合作[OK] ]

由于

2 个答案:

答案 0 :(得分:2)

你在重写规则中尝试了很多东西。我建议你不要。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)$ /index.php?url=$0 [PT,L]

我建议你将完整的字符串重写为$_GET['url']变量。你可以在你的代码中爆炸这个变量。这样您只需编辑一次vhost。

RewriteCond仍在计算中(在上面和下面的示例中)。

这些重写条件将检查文件或目录是否存在。如果不是,它将应用重写规则

如果条件不起作用,请尝试将条件置于每RewriteRule之上 像这样:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([a-zA-Z0-9-,]+)/?$ /index.php?a=$1 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/?$ /index.php?a=$1&b=$2 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/?$ /index.php?a=$1&b=$2&c=$3 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-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

答案 1 :(得分:0)

尝试使用条件

RewriteCond %{REQUEST_URI} !^/blog$ [OR]
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule ^/([a-zA-Z0-9-_,]+)/?$ /index.php?a=$1

这是一个玩条件和正则表达的问题。当URI以“/ blog /”

开头时,这应该可以防止触发重写