2009-03-01 38 views
1

我已经使用CakePHP重写了我的web应用程序,但现在我需要将我的旧格式的url重定向到我的新url格式。我似乎无法添加我自己的自定义国防部队重写规则。我已经在主要的cakephp重写规则之上添加了它,但是我得到了一个无限重定向循环。我只想http://mysite.com/index.php?action=showstream&nickname=user在cakephp重写之前重定向到http://mysite.com/user如何为CakePHP路由编写自定义mod_rewrite .htaccess文件?

编辑:好吧,所以现在当条件满足时它重定向,但它将原始查询字符串追加到结尾。我假设在CakePHP中的QSA标志重写规则这是由于,但在我印象中我的规则中的“L”将停止从执行下...

RewriteEngine On 

RewriteCond %{QUERY_STRING} ^action\=showstream&nickname\=(.*)$ 
RewriteRule ^.*$ http://mysite.com/%1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

+0

我已更新了我原来的帖子。任何帮助将不胜感激! – makeee 2009-03-01 19:38:08

回答

1

当你做捕获在RewriteCond行内而不是RewriteRule,您必须使用%N而不是$ N引用捕获。也就是说,你的重写规则行应该是:

RewriteRule ^index.php$ /%1 [R=301,L] 
1

尝试测试请求行(THE_REQUEST)看到URI原本已被要求什么:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.php 
RewriteCond %{QUERY_STRING} ^action=showstream&nickname=([^&]*)$ 
RewriteRule ^index\.php$ /%1? [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php?url=$0 [QSA,L] 

但也许它会更容易做到这一点与PHP。

相关问题