我正在尝试将所有流量重新写入old_site文件夹
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/(.+) old_site/$1/$2 [NC,QSA,L]
适用于
/blog/profile/index.php OR /blog/posts.php
但为什么不匹配
/blog/login/ or /blog/login
我是否需要指定一个单独的规则来处理包含和不包含斜杠/?
的目录编辑:
根据slugonamission我添加了-d指令
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*) old_site/$1/$2 [NC,QSA,L]
它适用于/ blog / login /但不适用于/ blog / login,不知道有没有尾部斜杠,它不被视为目录?有没有办法修改当前规则,还是我需要一个新的添加斜杠?
答案 0 :(得分:2)
你几乎做到了! 这是应该工作的:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/(.*)/$ old_site/$1/$2 [NC,QSA,L]
RewriteRule ^(.*)/(.*)$ old_site/$1/$2 [NC,QSA,L]
请告诉我它是否有效
:)
顺便说一下,这是我最喜欢的检查regexp的工具:
http://www.quanetic.com/Regex(别忘了选择ereg(POSIX)而不是preg(PCRE)!)
答案 1 :(得分:1)
你快到了!您还需要单独处理目录,这是通过-d
条件完成的。
答案 2 :(得分:0)
通过更多研究,以下模式符合我的需要:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)(/|)$ old_site/$1/$2/ [NC,QSA,L]
/blog/profile/index.php /blog/posts.php
包括带有和不带斜杠的目录:
/博客/登录/
/博客/登录