我们的应用程序在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] ]
由于
答案 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 /”
开头时,这应该可以防止触发重写