在任何子文件夹中的索引时重新路由htaccess

时间:2014-08-07 11:24:21

标签: .htaccess mod-rewrite url-rewriting

我目前在htaccess中设置了以下重写:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/(.*)$ index.php?controller=$1&cmd=$2&params=$3 [L,QSA]
RewriteRule ^([^/]*)/([^/]*)$ index.php?controller=$1&cmd=$2 [L,QSA]
RewriteRule ^([^/]*)$ index.php?controller=$1 [L,QSA]

所以例如博客只是重写为index.php?controller = blog或blog / show / 32重写为index.php?controller = blog& cmd = show& params = 32等等。

我想将我的所有网站转移到一个名为testing的子文件夹中,因此需要更新我的htaccess以适应。不担心重新路由到文件夹,即我没有打扰输入www.example.com并且它在/testing/index.php登陆,我想输入www.example.com/testing/并且它在索引处着陆.php它做了但其他规则似乎打破了。

2 个答案:

答案 0 :(得分:1)

如果将此.htaccess与文件一起移动到子文件夹,它将按预期工作。你不需要改变任何东西。如果.htaccess中有RewriteBase指令,则必须更新它以反映新路径。

答案 1 :(得分:0)

将此规则保留在root .htaccess中:

RewriteEngine On

RewriteRule ^((?!testing/).*)$ testing/$1 [L,NC]

将此规则保留在/ testing / .htaccess`中:

RewriteEngine On
RewriteBase /testing/

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)/(.+)$ index.php?controller=$1&cmd=$2&params=$3 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?controller=$1&cmd=$2 [L,QSA]
RewriteRule ^([^/]+)/?$ index.php?controller=$1 [L,QSA]