下面的代码给我一个内部服务器错误,我不能确定原因。

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"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top