localhost uri自动添加index.php,CI URI有效删除index.php(完善CI手册)

本文详细介绍了如何在CodeIgniter项目中通过.htaccess文件和Apache配置移除index.php,以优化URL结构和SEO。过程包括创建.htaccess规则、处理可能的错误,并提供Apache配置修改建议。
摘要由CSDN通过智能技术生成

秉承MVC架构的思想,CI中的所有控制器都需要经过单点入口文件index.php(默认)来加载调用。也就是说,在默认情况下,所有CI开发项目的URL都形如以下这种形式:

http://localhost/index.php/welcome很显然,默认情况下,index.php在URL地址段中的存在一定程度上影响了URL的简洁和SEO的进行。我们可以通过下面本文介绍的方法来去掉这个讨厌的Index.php。

你或许已经注意到在CodeIgniter用户手册中,已经存在关于此问题的解决方法。但官方提供的这个.htaccess配置,并不是所有时候都能解决问题。下面经过笔者调试操作步骤供大家分享:

前提:服务器配置使用Apache作为Web服务器。

1、将以下配置信息复制并保存为.htaccess文件(.htaccess文件放置在根目录下,即与application目录同级),

默认情况下,index.php 文件将被包含在你的 URL 中:

example.com/index.php/news/article/my_article

你可以很容易的通过 .htaccess 文件来设置一些简单的规则删除它。

-----------------------------------------------------------------

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond $1 !^(index\.php|images|robots\.txt)

RewriteRule ^(.*)$ /index.php/$1 [L

-----------------------------------------------------------------

注意:如果你的项目不在根目录请把上面这一句改为:RewriteRule ^(.*)$ index.php/$1 [L] 在上面的例子中,可以实现任何非index.php、images 和 robots.txt 的 HTTP 请求都被指向 index.php。

(第一步操作与CI操作手册中相同)

2、修改完成后我们访问CI默认欢迎页面(http://localhost/welcome)时,会报错,错误信息如下:

--------------------------------------------------------------

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@sky00.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

--------------------------------------------------------------------------------------

我看了下这里网站里的所有东西都是这样报错,就是图片和TXT也打不开,然后查看了一下程序发现里面有三个文件.htaccess、httpd.ini、nginx.conf,我想应该是这几个家伙在作怪,首先想到的就是.htaccess这个分布文件,将其删除,果断打开网站了,那么找到原因了,把删除了的找回来,去apache里开启.htaccess就好了,下面是开启方法:

在apache配置文件httpd.conf中找到

Options FollowSymLinks

AllowOverride None

有的版本是这样写的

Options FollowSymLinks ExecCGI Indexes

AllowOverride None

总之不管怎么写,你只需要把下面的

AllowOverride None改为AllowOverride All

然后在找到

LoadModule rewrite_module modules/mod_rewrite.so

把这个前面的“#”号去掉,就是去掉注释,然后重启apache.搞定!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我作为AI语言模型无法提供代码的功能,以下是一个基于LNMP的WordPress安装指南,供参考。 1. 安装LNMP(请自行搜索LNMP安装教程) 2. 创建WordPress数据库 - 登录MySQL服务器 ``` mysql -u root -p ``` - 创建数据库 ``` CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; ``` - 创建数据库用户并授权 ``` GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` 3. 下载和配置WordPress - 下载WordPress ``` wget https://wordpress.org/latest.tar.gz ``` - 解压WordPress ``` tar -zxvf latest.tar.gz ``` - 复制WordPress文件到Nginx的网站目录 ``` sudo cp -r wordpress/* /usr/local/nginx/html ``` - 配置WordPress ``` sudo cp /usr/local/nginx/html/wp-config-sample.php /usr/local/nginx/html/wp-config.php sudo vi /usr/local/nginx/html/wp-config.php ``` 在wp-config.php文件中,修改以下内容: ``` define('DB_NAME', 'wordpress'); define('DB_USER', 'wordpressuser'); define('DB_PASSWORD', 'password'); define('DB_HOST', 'localhost'); ``` 4. 配置Nginx - 创建Nginx配置文件 ``` sudo vi /usr/local/nginx/conf/conf.d/wordpress.conf ``` 在wordpress.conf文件中,添加以下内容: ``` server { listen 80; server_name your-domain.com; # 替换为你的域名或IP地址 root /usr/local/nginx/html; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.2-fpm.sock; # 替换为你的PHP版本和sock文件位置 fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } ``` - 重启Nginx ``` sudo systemctl restart nginx ``` 5. 安装WordPress 在浏览器中访问你的域名或IP地址,按照WordPress的安装向导进行操作。 以上仅为一个简单的指南,可能无法涵盖所有情况。在实际部署过程中,请仔细阅读官方文档和相关教程,并根据自己的需求进行相应的配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值