.htaccess RewriteEngine 中断 CGI 应用程序

.htaccess RewriteEngine 中断 CGI 应用程序

我的 .htaccess 文件位于我网站的根目录中,我将问题缩小到一行代码RewriteEngine on。我怎么知道是这一段代码?因为我删除了整个.htaccess文件,只留下RewriteEngine on一个测试文件……但我的 CGI 应用程序仍然崩溃了。

如果有人知道为什么该RewriteEngine on线路决定自行破坏 CGI 应用程序,我很乐意听听!

PS-如果您感兴趣的话,我想要运行的这段代码是为了帮助将所有域合并为一个域(换行只是为了使其更容易阅读):

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html 
RewriteRule (.*) http://www.example.com/ [R=301,L]

答案1

有可能mod_rewrite当前未在您的 Apache 配置中启用(通常在 httpd.conf 中)。

如果启用它,它看起来会像这样:

# For Unix-like OSes
LoadModule rewrite_module modules/mod_rewrite.so

或者

# For Windows
LoadModule rewrite_module modules/mod_rewrite.dll

# For both
AddModule mod_rewrite.c

在 Apache 2.0/2.2 中该AddModule行可能不是必需的。

a2enmod modulename某些操作系统将 Apache 模块加载器放在另一个目录中。在 Debian 和 Ubuntu Linux 上,已安装模块的配置文件位于 /etc/apache2/modules-available 中,在本例中可以使用 ; 激活a2enmod rewrite

相关内容