2012-03-18 98 views
0

我正在使用CMS,直到今天一直很好。htaccess 404问题

但我发现mod rewirte只有在网站位于根目录时才有效。如果我把整个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] 

回答

1

然后,您需要将子文件夹添加到像这样的重写规则中,以满足所有规则。

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

您的配置Apache会在根目录

+0

aahhh公顷是行不通的!感谢堆 – cardi777 2012-03-18 16:37:08

0

你的脚本中提取数据是斜线之间,如index.php文件搜索:

/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] 

所以,你将需要修复的每一行都正则表达式和新的路径,只需用您的文件夹的名称替换文件夹并添加[^/\。] +/在启动

如果你可能只是需要解决的正则表达式只是不添加/文件夹到线的第二部分