Мой файл .htaccess находится в корневом каталоге моего веб-сайта, и я сузил проблему до одной строки кода. RewriteEngine on
. Откуда мне знать, что это этот фрагмент кода? Потому что я удалил весь .htaccess
файл за исключением RewriteEngine on
в качестве теста ... и мое приложение CGI все равно сломалось.
Если кто-нибудь знает, почему RewriteEngine on
line решает самостоятельно сломать приложение 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]
Скорее всего, 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
В AddModule
строка может не понадобиться в Apache 2.0 / 2.2.
Некоторые ОС помещают загрузчики модулей Apache в другой каталог. В Debian и Ubuntu Linux файлы конфигурации для установленных модулей находятся в / etc / apache2 / modules-available и могут быть активированы с помощью a2enmod modulename
; в таком случае a2enmod rewrite
.