Type1853 2022-01-05 00:23 采纳率: 100%
浏览 98
已结题

网站域名如何强制加index.php

比如访问add.com
强制跳转成add.com/index.php
网站内随便点一个内容都要包含index.php
例如add.com/index.php/1.html

  • 写回答

5条回答 默认 最新

  • huidaoli Python领域新星创作者 2022-01-05 11:30
    关注

    一、需要先理解什么是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条)

报告相同问题?

问题事件

  • 系统已结题 1月16日
  • 专家已采纳回答 1月8日
  • 创建了问题 1月5日

悬赏问题

  • ¥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,要求快速高效