好吧,我环顾四周,似乎找不到答案。
现在我不是要你给我一小块代码,然后说“这是解决办法”,我想让你解释一下你是怎么做到的,你想出什么办法等等。我真的很想知道更多关于这个问题的信息,而唯一的学习方法就是以身作则。
现在我要做的是:
目前我的博客(word按go图,因为他们拥有世界),是根目录上的。所以我的帖子看起来像:http://localhost/hello-world。举个例子。
不过,我刚刚扩展了我的站点,使用代码点火器定制了PHP脚本。我需要将代码点火器脚本放在根目录上,并将博客移动到/main/或/ blog /。我不想摆脱我的博客,但我不希望谷歌必须重新索引每一个博客帖子,或让谷歌导致坏的帖子网址。更重要的是,我不想在这里坐上几个小时,为每一篇博客文章创建重定向urls (其中有数百篇)。
现在我需要重定向成为301重定向。
这是我遇到的问题。
我需要把这个放在.htaccess里:
RewriteEngine on
RewriteCond $1 !^(index\.php|admin|css|img|js|main|favicon.ico)
RewriteRule ^(.*)$ index.php/$1 [L]这将删除丑陋的localhost/index.php/controller/controller-function/。
但是我需要让我的.htaccess重定向/而不是我已经拥有的预置urls上的所有东西。
我通过代码点火器预置的url论证如下:
/details/
/register/
/city/
/search_process/
/login/
/logout-success/
/login-success/
/logout/
/login/
/manage/
/panel/所以在本质上..。
localhost/hello-world/必须将301重定向到localhost/main/hello-world
和
localhost/(上述任何一个)/都不能重定向到/main/或/blog/
另外,如果您在当前的.htaccess中注意到,我允许某些东西,比如/admin / css/ /img/ /js/ (/main/是明显的博客)和favicon.ico (因为它看起来棒极了)。
请教我!(你多久听到一次?:P)
信用归于劳伦斯·切隆!
他最初给了我答案,从那时到现在,我认为我第一次做了一个错误,并偶然丢失了代码,在复制/粘贴之后第二次失败了(因为我第一次把它打印出来是为了学习它)。
因此,这是修改后的工作方案。我完全信任劳伦斯·切隆(他接受了这个问题的答案),因为他帮助我解决了这个问题,而最终,没有他,我不可能得到这个有效的解决方案。再次感谢,伙计!
RewriteEngine on
RewriteCond $1 !(panel|manage)
RewriteRule ^(.*)$ http://localhost/choosefitness/main/$1 [R=301,L]
RewriteEngine on
RewriteCond $1 !^(index\.php|admin|css|img|js|less|favicon.ico)
RewriteRule ^(.*)$ index.php/$1 [L]这只是声明,只要第一个参数http://localhost/choosefitness/first-argument不是/panel或/manage。它应该301重定向到/main/ (必须为301重定向提供完整的URL,而不仅仅是main/$1)
然后,它指出在或favicon.ico上提出的任何请求都应该被忽略。否则应在index.php上进行(这将从代码点火器的url中删除index.php )
我不知道它为什么会起作用,我只是知道它会起作用。不过,我还没有对它进行充分的测试,但我相信,如果不需要重定向,就可以访问/css,您必须向第一个RewriteCond添加css。但是,服务器可以访问css文件,而不需要这样做。
发布于 2012-04-16 20:19:18
这是未经测试的&非常肯定index.php/$1/$2是错的,但是..。您可以包含一个与CI规则匹配的规则,然后传递给CI控制器,如果不匹配,则重写到您的/blog/ url。也别忘了逃避。在favicon\.ico部分。
RewriteEngine on
RewriteCond $1 !^(index\.php|admin|css|img|js|main|favicon\.ico)
RewriteRule ^(details|register|city|search_process|login|logout-success|login-success|logout|login|manage|panel)/(.*)$ index.php/$1/$2 [L]
RewriteRule ^(.*)$ /blog/$1 [L]编辑:如果您的参数位于前面,那么将规则切换到如下内容:
RewriteRule ^(.*)/(details|register|city|search_process|login|logout-success|login-success|logout|login|manage|panel)$ index.php/$1/$2 [L]https://stackoverflow.com/questions/10180556
复制相似问题