htaccess 404问题

时间:2012-03-18 16:28:20

标签: .htaccess mod-rewrite

我正在使用CMS,直到今天一切都很好。

但是我发现只有当网站在根目录中时,mod reirte才有效。如果我把整个CMS放到一个文件夹中,我会得到一个404。

请帮忙!

RewriteEngine on
Options +FollowSymLinks

RewriteRule ^([^/\.]+)/?$ /index.php?1=$1 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /index.php?1=$1&2=$2 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ /index.php?1=$1&2=$2&3=$3 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ /index.php?1=$1&2=$2&3=$3&4=$4 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ /index.php?1=$1&2=$2&3=$3&4=$4&5=$5 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ /index.php?1=$1&2=$2&3=$3&4=$4&5=$5&6=$6 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ /index.php?1=$1&2=$2&3=$3&4=$4&5=$5&6=$6&7=$7 [L]

2 个答案:

答案 0 :(得分:1)

然后,您需要将子文件夹添加到您的重写规则中,以适用于您的所有规则。

RewriteRule ^([^/\.]+)/?$ /subfolder/index.php?1=$1 [L]

使用您的配置,apache将在根目录

中搜索index.php文件

答案 1 :(得分:0)

您的脚本正在提取斜杠之间的数据,如:

/test1/test2/ transfers into /index.php?1=test1&2=test2

但是自从你开始使用文件夹以来它就像:

/folder/test1/test2/ transfers into /index.php?1=folder&2=test1&3=test2

因此文件夹名称会破坏您的结构,您需要修复文件夹名称或表达式的每一行,如下所示:

RewriteRule ^[^/\.]+/([^/\.]+)/?$ /folder/index.php?1=$1 [L]

因此,您需要在每一行修复正则表达式和新路径,只需将文件夹替换为文件夹名称,然后在开始时添加 [^ / \。] + /

如果这不起作用,您可能只需要修复正则表达式而不将/文件夹添加到行的第二部分