用PHP写一个.htaccess文件?

zi8p0yeb  于 2022-12-30  发布在  PHP
关注(0)|答案(4)|浏览(155)

在我的PHP网站上,我有时候会向用户显示一个维护页面。我知道我可以很容易地在PHP中做到这一点,但我宁愿使用一个htaccess文件,我认为这样性能可能会更好。所以我想知道的是,我可以在PHP中修改一个htaccess文件吗?如果可能的话,我想要么,
1 -必须有两个文件,一个有下面的代码,另一个没有,两个文件都包含我的其他htaccess的东西,然后php可以重命名这两个文件,当我运行一个管理脚本切换显示哪个文件,通过改变它的名称为.htaccess
2-读取当前.htaccess文件的内容,并将下面的代码附加到其中,然后也可以在需要时将其从文件中删除。

RewriteEngine On
RewriteBase / 
RewriteCond %{REQUEST_URI} !^/maintenance\.php$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]

我的目标是建立一个管理脚本,可以有一个点击处理更改维护页面显示或不显示。
请提供任何示例代码或提示如何做到这一点,或者如果它甚至可以修改一个.htaccess文件从PHP

hof1towb

hof1towb1#

你可以用fopen打开文件,也可以用fwrite写入文件,如果你想用追加模式打开文件,请阅读使用手册。
也就是说,这听起来像是一种奇怪的做事方式。
我只需要重写检查文件是否存在的规则就可以完成您要做的事情:

RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /maintenance.html [L]

如果maintenance.html文件存在,那么我的网站正在维护中。

mwg9r5ms

mwg9r5ms2#

我强烈建议不要PHP.htaccess,你必须给予web服务器用户(通常权限很低)写.htaccess的权限;您只需要一个可利用的脚本,攻击者就可以有效地重新配置您的服务器。
对于应用内切换维护模式,坚持让PHP自己返回维护页面。当你在应用上做维护时,很容易临时重命名一个文件到.htaccess's位置,以启用维护重写。

x0fgdtte

x0fgdtte3#

RewriteEngine On
RewriteBase / 
RewriteCond %{REQUEST_URI} !^/maintenance\.php$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]
ghhaqwfi

ghhaqwfi4#

选项-多视图

RewriteEngine On

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]

RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php

<Files ~ "^.*\.([Ee][Nn][Vv])">
 order allow,deny
 deny from all
 satisfy all
</Files>

这一页有什么错误,它不允许我继续到下一页

相关问题