从URL中删除"index.php" - Codeigniter

Mac*_*Mac 8 apache macos codeigniter osx-snow-leopard

我查看了Codeigniter index.php在访问不同视图时从URL 中删除的文档,代码显示了如何使用apache删除它:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)

但是,当我去的时候http://localhost/code/home,我得到了这个:

在此服务器上找不到请求的URL /代码/ home.

但访问http://localhost/code/index.php/home工作很好,为什么它不适合我?

我在Mac OS X Snow Leopard上使用Sites目录:/Users/~myusername~/Sites/code,我没有使用任何软件,即MAMP,XAMPP.

编辑

对于sudo /usr/sbin/apachectl -k restart -S命令,我得到这个:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server code.local (/private/etc/apache2/httpd.conf:146)
         port 80 namevhost code.local (/private/etc/apache2/httpd.conf:146)
Syntax OK
Run Code Online (Sandbox Code Playgroud)

ace*_*ace 8

您需要将"http:// localhost/code"作为"code.local"(在我的示例中)作为您的web根目录.假设您在Mac OS X Snow Leopard上的设置与我的相同.

您应该将以下行添加到"/etc/apache2/extra/httpd-vhosts.conf"

<VirtualHost *:80>
    DocumentRoot "/Users/~myusername~/Sites/code"
    ServerName "code.local"
    ErrorLog "/private/var/log/apache2/code-error_log"
    CustomLog "/private/var/log/apache2/code-access_log" common
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

还要确保在"/etc/apache2/httpd.conf"中取消注释它

# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf
Run Code Online (Sandbox Code Playgroud)

然后你将code.local添加到你的"/ etc/hosts",它应该是这样的

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
127.0.0.1       code.local
Run Code Online (Sandbox Code Playgroud)

然后重启你的apache"/ usr/sbin/apachectl -k restart".

如果您不是超级用户,则可能需要sudo.希望这可以帮助.

编辑:检查您的虚拟主机是否正常工作.运行此sudo/usr/sbin/apachectl -k restart -S查看是否已将code.local添加为您的虚拟主机之一.

然后尝试访问code.local/index.php/welcome和code.local/welcome以检查它是否有效.


Bra*_*rad 7

试试这个吧

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA] 
Run Code Online (Sandbox Code Playgroud)

在我上班之前我试过3次


Akh*_*N S 6

要从URL中删除index.php,只需添加即可

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Run Code Online (Sandbox Code Playgroud)

在.htaccess文件中,将.htaccess文件移动到index.php位置附近

/var/www/CodeIgniter/index.php
/var/www/CodeIgniter/.htaccess
Run Code Online (Sandbox Code Playgroud)

在配置文件夹集中的config.php中

$config['index_page'] = '';
Run Code Online (Sandbox Code Playgroud)