PHP 预先运行 run.php的方式

magiclock 发布于 2015/06/10 22:14
阅读 248
收藏 0

例如:一个网站 http://baidu.com

打开 这个站点 http://baidu.com/jin.html 页面

它会先运行该站点根目录下的 run.php 文件,然后再从 run.php 文件中获取 jin.html 的路径,最后才在浏览器中实现,在该站点的根目录下并没有 .htaccess 文件。

请问这个该怎么实现呢?

加载中
2
eechen
eechen
因为Apache没有对应Nginx的try_files指令,所以判断会多一些:
Apache .htaccess则可以试着这样写:
<IfModule mod_rewrite.c>
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule "^jin.html$" "html/jin.html" [L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . run.php [L]
</IfModule>
eechen
eechen
回复 @magiclock : RewriteRule "^jin.html$" "html/jin.html" [L] 改为 RewriteRule "^(.*).html$" "html/$1.html" [L] 应该也是可以的.
m
magiclock
运行成功,谢谢!!
1
eechen
eechen
Apache的重写规则不一定要放在.htaccess,也可以跟Nginx那样直接写在配置文件里.

你可以配置把URL请求交给前端路由来处理,比如Nginx这样配置:
location / {
    try_files $uri $uri/ /html$uri /run.php?$args;
}
比如访问/jin.html,会先尝试/jin.html(文件),再尝试/jin.html/(目录),然后尝试/html/jin.html(静态缓存),找不到则连同参数($args)传给/run.php处理(/jin.html).

这样run.php就可以用$_GET或者$_SERVER['QUERY_STRING']获得$args参数,用$_SERVER['REQUEST_URI']获得$uri路径了(/jin.html).

最后就是你自己分析这些数据,然后到file_get_contents读取指定目录的jin.html输出即可.
m
magiclock
请问apache .htaccess 中该如何配置?
0
Tuesday
Tuesday

不一定要.htaccess

apache配置也可以... 

m
magiclock
请问apache .htaccess 中应该怎么配置?
0
m
magiclock

引用来自“eechen”的评论

因为Apache没有对应Nginx的try_files指令,所以判断会多一些:
Apache .htaccess则可以试着这样写:
<IfModule mod_rewrite.c>
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule "^jin.html$" "html/jin.html" [L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . run.php [L]
</IfModule>
运行成功,谢谢您的帮助!
返回顶部
顶部