题
下面的代码给我一个内部服务器错误,我不能确定原因。
RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ html/$1.html
所有它应该做的是把网址
/test
和转动有它引用
/html/test.html
在幕后,但只有当环境是生产,这是由设置SETENV
没有正确的解决方案
其他提示
也许我的国防部重写是锈迹斑斑,但如果我的理解是,这似乎是在做你所说的恰恰相反。如果应用是生产,那么它不会重写URL(它跳过了一条规则,)。我没有看到任何会导致虽然内部服务器错误。
要做到你说的话,你就需要这样的:
RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} !=production
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ html/$1.html
如果您仍然有问题,检查Apache的错误日志,具有对内部服务器错误500的最佳方式。
要么不喜欢它托德Gardner说或删除所述冗余规则和条件绑定到第二规则:
RewriteEngine On
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^(.*)$ html/$1.html
此外我会使用此规则来避免递归:
RewriteCond %{ENV:APPLICATION} =production
RewriteRule !^html/ html%{REQUEST_URI}.html
在国防部重写记录转到得到有用的错误。
RewriteLog rewrite_log
ReWriteLogLevel 2
调整为冗长的日志级别。
您必须把引号括起来的各地正确进行比较
RewriteCond %{ENV:APPLICATION} !="production"
不隶属于 StackOverflow