![.htaccess RewriteEngine 中断 CGI 应用程序](https://linux22.com/image/501597/.htaccess%20RewriteEngine%20%E4%B8%AD%E6%96%AD%20CGI%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
我的 .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
。