我正在使用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]
答案 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]
因此,您需要在每一行修复正则表达式和新路径,只需将文件夹替换为文件夹名称,然后在开始时添加 [^ / \。] + /
如果这不起作用,您可能只需要修复正则表达式而不将/文件夹添加到行的第二部分