mod_rewrite没有正确重定向Perl CGI网址

时间:2013-05-29 23:38:53

标签: perl .htaccess mod-rewrite cgi

我的cgi-bin文件夹中有一些文件,而html文件夹中有其他文件。

当我访问/cgi-bin/index.cgi时,会显示正常的索引页面。但是,当我访问我的域名时,例如“domain.com”,它会给我一个apache页面。可能会说那里没有index.html页面,并且我的html文件夹中没有index.html页面。但是,我的html文件夹中的.htaccess文件可以正确地重定向链接。但是,这些链接未被重定向。

这是我的.htaccess文件

deny from 127.1.1.4
deny from 127.1.1.1

AddDefaultCharset utf-8
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_CGI_AUTHORIZATION:%1]

RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule    ^([0-9A-Za-z]{12})(\/?.+|$)$        ?op=download1&id=$1&fname=$2 [L]
RewriteRule    ^([0-9A-Za-z]{12})(\/.+|\.html?|$)   ?op=download1&id=$1&fname=$2 [L]

RewriteRule    ^embed-([0-9A-Za-z]{12})\.html$      ?op=video_embed&file_code=$1 [L]
RewriteRule    ^embedmp3-([0-9A-Za-z]{12})\.html$   ?op=mp3_embed&file_code=$1 [L]
RewriteRule    ^box$                    /cgi-bin/index_box.cgi [L]

RewriteRule    ^$                   /cgi-bin/index.cgi [L]
RewriteRule    ^free([0-9]+)\.html$         /cgi-bin/index.cgi?op=registration&aff_id=$1 [L]
RewriteRule    ^checkfiles\.html$           /cgi-bin/index.cgi?op=checkfiles [L]
RewriteRule    ^contact\.html$              /cgi-bin/index.cgi?op=contact [L]
RewriteRule    ^premium\.html$              /cgi-bin/index.cgi?op=payments [L]
RewriteRule    ^login\.html$                ?op=login [L]
RewriteRule    ^catalogue(.*)\.html$            /cgi-bin/index.cgi?op=catalogue&date=$1 [L]
RewriteRule    ^news([0-9]*)\.html$         ?op=news&page=$1 [L]
RewriteRule    ^n([0-9]+)-.*\.html$         /cgi-bin/index.cgi?op=news_details&news_id=$1 [L]
RewriteRule    ^faq\.html$              /cgi-bin/index.cgi?op=page&tmpl=faq [L]
RewriteRule    ^tos\.html$              /cgi-bin/index.cgi?op=page&tmpl=tos [L]
RewriteRule    ^links\.html$                /cgi-bin/index.cgi?op=links [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule    ^pages/([a-z0-9\-\_]+).html      /cgi-bin/index.cgi?op=page&tmpl=$1$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule    ^users/([0-9A-Za-z\-_]{4,64})/?([0-9]+|$)    /cgi-bin/index.cgi?op=user_public&usr_login=$1&fld_id=$2 [L,NC]

RewriteRule    \.pm$                    /404.html [L]

ErrorDocument 404 /404.html

例如,此链接:domain.com/?op=registration不会重定向到正确的页面。

与此链接相同:domain.com/login.html

其他所有链接都是诚实的。我99%肯定是因为上面发布的.htaccess文件,但我似乎无法弄清楚索引重定向的问题。

1 个答案:

答案 0 :(得分:1)

您的重写规则缺少/,例如:

RewriteRule    ^/premium\.html$              /cgi-bin/index.cgi?op=payments [L]

更新:即使主页重定向也需要/.

首先废弃您拥有的所有内容并开始使用简单版本:

deny from 127.1.1.4
deny from 127.1.1.1

AddDefaultCharset utf-8
RewriteEngine on
Options +FollowSymLinks
RewriteRule    ^$                    /cgi-bin/index.cgi [L]

假设有效,可以逐个添加条件和其他规则,直到看到破坏它为止。