好的,我环顾四周,似乎找不到答案。
现在我不是要求你只给我一段代码,然后说“这就是修复”,我想让你解释一下你是怎么做到的,你想出了什么等等。我真的很喜欢要了解更多有关此的信息,而学习的唯一方法是通过示例。
现在我需要做的是:
目前我的博客(word press go figure,因为他们拥有世界)位于根目录。所以我的帖子看起来像:http://localhost/hello-world
。只是一个例子。
然而,我刚刚扩展了我的网站,使用 Code Igniter 定制了一个 PHP 脚本。我需要将 Code Igniter 脚本放在根目录下,并将博客移动到 /main/ 或 /blog/。我不想摆脱我的博客,但我不希望谷歌不得不重新索引每一篇博文,或者让谷歌导致错误的帖子网址。更重要的是,我不想坐在这里几个小时,为每一篇博文(有数百篇)创建重定向网址。
现在我需要重定向是 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 重定向 / 上的所有内容,而不是我已经拥有的预设网址。
我通过 Code Igniter 获得的 Preset url 争论是:
/details/
/register/
/city/
/search_process/
/login/
/logout-success/
/login-success/
/logout/
/login/
/manage/
/panel/
所以本质上..
localhost/hello-world/ 必须 301 重定向到 localhost/main/hello-world
和
localhost/(any-of-the-above)/ 必须不重定向到 /main/ 或 /blog/
另外,如果您在当前的 .htaccess 中注意到,我已经允许某些内容,例如 /admin/ /css/ /img/ /js/(/main/ 显然是博客)和 favicon.ico(因为它看起来很棒)
请教我!(你多久听到一次?:P)
劳伦斯·切罗内功劳!
他最初给了我答案,从那时到现在,我认为我第一次打错了代码,不小心丢失了代码,第二次复制/粘贴后它没有工作(因为我第一次真的打字它出来学习它)。
所以这里使用修改后的工作解决方案。我完全归功于 Lawrence Cherone(对这个问题有公认答案的人),因为他帮助我解决了这个问题,最终如果没有他,我无法得到这个可行的解决方案。再次感谢 bud!
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)
然后它指出在 admin css img js lss 或 favicon.ico 上发出的任何请求都应该被忽略。else 应该在 index.php 上进行(这会从代码点火器中的 url 中删除 index.php)
我不知道它为什么有效,我只知道它有效。但是我还没有完全测试它,但我相信能够在没有重定向的情况下访问 /css,你必须将 |css 添加到第一个 RewriteCond。但是,服务器无需这样做即可访问 css 文件。