首页 文章

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

提问于
浏览
0

我们的应用程序在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 回答

  • 0

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

    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
    
  • 2

    尝试使用条件

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

    这是一个玩条件和正则表达的问题 . 当URI以“/ blog /”开头时,这应该可以防止触发重写

相关问题