Apache重写路由,隐藏index.php在本地环境失效

  1. 本地的httpd.conf文件的LoadModule rewrite_module modules/mod_rewrite.so已经开启

  2. 根目录下的.htaccess文件重写规则如下:

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

  1. config.php文件中已经设置:'URL_MODEL' => 2,

发布到服务器上访问:http://域名/admin可以正确访问,但是在本地测试环境,将应用根目录虚拟域名之后访问:
http://inurse.com/admin报错:
404 NOT Found
The requested URL /Admin/Org/orgAdd was not found on this server.
想请问这是为什么呢?Apache重写路由规则的原理是什么(通俗易懂的解释)?
另:重写规则已经尝试过:
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]

阅读 5.7k
1 个回答

楼主,你的配置好像有误:
1、下面的配置应该是 apache 的配置 httpd.conf
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

2、.htaccess 配置只需要中间的:
RewriteEngine on

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

建议用第二种方式;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进