我的htaccess不太有效:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.php$/blah/$1 [R=301,L]
RewriteRule ^(.*)$/blah/index.php/$1 [L]
基本上/blah/about.php应该重定向到/ blah / about
我正在使用codeigniter,因此需要最后一行来处理URL.
重定向工作正常但我在/ blah / about中得到内部服务器错误
**编辑 – 错误日志:
由于可能的配置错误,请求超出了10个内部重定向的限制.如有必要,使用’LimitInternalRecursion’增加限制.使用“LogLevel debug”获取回溯.
解决方法:
我想你只需要改变你的最后一行:
RewriteRule ^(.*)$/blah/index.php?/$1 [L]
我没有CodeIgniter的特定经验,但通常框架希望通过中央控制器(index.php)推送所有请求,然后从那里解析请求的URL.
编辑:刚刚用这里的例子更新我的答案:http://codeigniter.com/wiki/mod_rewrite/,这应该是CodeIgniter想要它的方式.
更新:您可能应该为第二个RewriteRule复制RewriteConds,它们仅适用于第一个:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.php$/blah/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$/blah/index.php/$1 [L]
标签:htaccess,php,codeigniter,mod-rewrite
来源: https://codeday.me/bug/20190925/1816443.html