我的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文件,但我似乎无法弄清楚索引重定向的问题。
答案 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]
假设有效,可以逐个添加条件和其他规则,直到看到破坏它为止。