以下代码给出了内部服务器错误,我无法确定原因。
RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ html/$1.html
所有它应该做的是采取网址
/test
并转而参考
/html/test.html
幕后操作,但前提是环境是生产,由SetEnv设置
答案 0 :(得分:1)
也许我的mod重写是生锈的,但如果我理解它,那似乎与你说的相反。如果应用程序是生产,那么它将不会重写URL(并且它会跳过规则)。我没有看到任何会导致内部服务器错误的内容。
要做你想说的话,你需要这样的东西:
RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} !=production
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ html/$1.html
如果您仍然遇到问题,请检查您的apache错误日志,其中包含内部服务器错误500的最佳信息
答案 1 :(得分:0)
要么像托德·加德纳那样说,要么删除冗余规则并将条件绑定到第二条规则:
RewriteEngine On
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^(.*)$ html/$1.html
此外,我会使用此规则来避免递归:
RewriteCond %{ENV:APPLICATION} =production
RewriteRule !^html/ html%{REQUEST_URI}.html
答案 2 :(得分:0)
启用mod重写日志以获取有用的错误。
RewriteLog rewrite_log
ReWriteLogLevel 2
调整日志级别以获得详细程度。
答案 3 :(得分:0)
您必须在字符串周围加上引号才能正确比较
RewriteCond %{ENV:APPLICATION} !="production"