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

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

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

其实是可以自己定义自己想要路由的,要多优美就有多优美。

如果你index.php是入口文件,且没有配置伪静态,默认就是自动加index.php
已经加了伪静态的,去掉就可以了。
使用nginx或apache的配置文件去设置,设置完后重启

网址重定向,你百度一下这方面的内容就没问题了。

1、跳转到index.php文件可以使用nginx的rewrite
server {
listen 80;
server_name add.com;
rewrite ^/(.*)$ http://add.com/index.php break;
}
https://blog.csdn.net/carefree2005/article/details/110952184
2、如果你是想在路径中插入路径index.php可以使用nginx的反向代理结合上面的重定向。
location /index.php {
client_max_body_size 200m;
proxy_pass http://x.x.x.x:8080/ ;
proxy_set_header Host $host;
proxy_set_header Remote_Addr $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
https://blog.csdn.net/carefree2005/article/details/110952184

暴力破解