Mod rewrite Mod Rewrite Skip规则服务器错误

Mod rewrite Mod Rewrite Skip规则服务器错误,mod-rewrite,Mod Rewrite,下面的代码给出了一个内部服务器错误,我无法确定原因 RewriteEngine On SetEnv APPLICATION production RewriteCond %{ENV:APPLICATION} =production RewriteRule ^.*$ - [S=1] RewriteRule ^(.*)$ html/$1.html 它所要做的就是获取url /test 并将其转为参考 /html/test.html 在幕后,但只有当环境是生产环境时,这是由SetEnv设置的,

下面的代码给出了一个内部服务器错误,我无法确定原因

RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^.*$ - [S=1] 
RewriteRule ^(.*)$ html/$1.html
它所要做的就是获取url

/test
并将其转为参考

/html/test.html

在幕后,但只有当环境是生产环境时,这是由SetEnv设置的,可能我的mod rewrite已经生锈了,但如果我理解的话,这似乎与你所说的相反。若应用程序是生产型的,那个么它不会重写url(并且它跳过了可能的规则)。不过,我没有看到任何会导致内部服务器错误的情况

要做到你所说的,你需要做如下事情:

RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} !=production
RewriteRule ^.*$ - [S=1] 
RewriteRule ^(.*)$ html/$1.html

如果仍然存在问题,请检查apache错误日志,该日志包含内部服务器错误500的最佳信息,或者按照Todd Gardner所说的那样执行,或者删除冗余规则并将条件绑定到第二个规则:

RewriteEngine On
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^(.*)$ html/$1.html
此外,我将使用此规则来避免递归:

RewriteCond %{ENV:APPLICATION} =production
RewriteRule !^html/ html%{REQUEST_URI}.html

打开mod rewrite日志以获取有用的错误

RewriteLog rewrite_log
ReWriteLogLevel 2

调整日志级别的详细程度。

必须在字符串周围加引号才能正确比较

RewriteCond %{ENV:APPLICATION} !="production"