比如访问add.com
强制跳转成add.com/index.php
网站内随便点一个内容都要包含index.php
例如add.com/index.php/1.html
网站域名如何强制加index.php
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
关注 一、需要先理解什么是php的路由机制
- 1、路由机制就是把某一个特定形式的URL结构中提炼出来系统对应的参数。举个例子,如:http://add.com/index/1 其中:/index/1 -> ?_m=index&id=1。
- 2、然后将拥有对应参数的URL转换成特定形式的URL结构,是上面的过程的逆向过程。
二、还有就是PHP的URL路由方式
总体来说就是:获取路径信息->处理路径信息
URL路由方式:
- 第一种是通过url参数进行映射的方式,一般是两个参数,分别代表控制器类和方法比如index.php?c=index&m=index映射到的是index控制器的index方法。
- 第二种,是通过url-rewrite的方式,这样的好处是可以实现对非php结尾的其他后缀进行映射,当然通过rewrite也可以实现第一种方式,不过纯使用rewrite的也比较常见,一般需要配置apache或者nginx的
rewrite规则
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
- 第三种,就是通过pathinfo的方式,所谓的pathinfo,就是形如这样的url。xxx.com/index.php/c/index/aa/cc,apache在处理这个url的时候会把index.php后面的部分输入到环境变量$_SERVER['PATH_INFO'],它等于/c/index/aa/cc。然后我们的路由器再通过解析这个串进行分析就可以了,后面的部分放入到参数什么地方的,就依据各个框架不同而不同了。
三、 最后就是如何简单的实现PHP路由
1 修改htaccess文件
编写服务器apache或IIS自带的rewrite文件,将URL结构导入指定文件比如:index.php。
开启rewrite:htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。启用.htaccess,需要修改apache/conf/httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。
<Directory /> Options FollowSymLinks AllowOverride None </Directory>
改为
<Directory /> Options FollowSymLinks AllowOverride All </Directory>
然后写这样的rewrite:
RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭 #RewriteCond $1 !^(index.php\.php|images|robots\.txt) RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$ sharexie/test.php?action=$1&id=$2
四、路由优美过程举例:
1、将xianglc定到 index.php?c=myuser&m=itime&domain=xianglc
RewriteRule ^([a-zA-Z0-9]){6,20}/?$ index.php?c=myuser&m=itime&domain=$0 [L]
2、#RewriteRule ^/index.html$ /1.php [L]
RewriteRule ^/index-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)$ $9&a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7&h=$8 [C,NC] RewriteRule ^(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?).html(.*?)$ /1.php?$7&i=$1&j=$2&k=$3&l=$4&m=$5&n=$6 [QSA,L,NC]
其实是可以自己定义自己想要路由的,要多优美就有多优美。
本回答被专家选为最佳回答 , 对您是否有帮助呢?解决 4无用
悬赏问题
- ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
- ¥15 牛顿斯科特系数表表示
- ¥15 arduino 步进电机
- ¥20 程序进入HardFault_Handler
- ¥15 oracle集群安装出bug
- ¥15 关于#python#的问题:自动化测试
- ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
- ¥15 教务系统账号被盗号如何追溯设备
- ¥20 delta降尺度方法,未来数据怎么降尺度
- ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效