Sve*_*len 5 mod-rewrite codeigniter apache2
我已经安装了一个干净的Apache2(加上PHP和MySQL)服务器并启用mod_rewrite了apache配置.我添加了.htaccess文件以从URL中删除index.php,如CodeIgniter wiki中所述.
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)
我把这个文件放在网站的根目录下.
当我尝试访问该URL时,mydomain.local/index.php/welcome我得到CodeIgniter的默认页面.但是当我尝试访问同一页面时,mydomain.local/welcome我得到了404页面.
如何检查整个重写规则是否有效?为什么它不起作用?
假设您的配置(/application/config/config.php)已禁用index_page:
$config['index_page'] = '';
Run Code Online (Sandbox Code Playgroud)
你的Apache DocumentRoot是:/ srv/www /
创建与/ application /目录相同级别的.htaccess文件,其中包含以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
您应该注意到RewriteBase指向DocumentRoot(/).如果index.php在另一个目录中,则应相应地更改RewriteBase.
对于像这样的目录结构:
/srv/www/application/
/srv/www/system/
/srv/www/index.php
/srv/www/.htaccess
Run Code Online (Sandbox Code Playgroud)
你的RewriteBase应该是:/
对于像这样的目录结构:
/srv/www/codeigniter/application/
/srv/www/codeigniter/system/
/srv/www/codeigniter/index.php
/srv/www/codeigniter/.htaccess
Run Code Online (Sandbox Code Playgroud)
你的RewriteBase应该是:/ codeigniter /
等等,你得到了图片.