Php 如果文件未包含,则重定向
我试过很多代码,但都不管用。如果PHP不包含该文件,是否有任何方法可以使用htaccess重定向 迄今为止:Php 如果文件未包含,则重定向,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我试过很多代码,但都不管用。如果PHP不包含该文件,是否有任何方法可以使用htaccess重定向 迄今为止: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/(.*).html index.php?lang=$1&menu=$2 [QSA,L] 因此,当我编写任何/en/introduction.html时,它都会被重写。 但是当有人想要获取我的一个p
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*).html index.php?lang=$1&menu=$2 [QSA,L]
因此,当我编写任何/en/introduction.html
时,它都会被重写。
但是当有人想要获取我的一个php代码(例如/menu.php
)时,应该将其重定向到/index.php
在PHP中,我可以用一个开始的PHP代码来解决这个问题,但我会减慢系统的速度,这就是为什么我需要htaccess。因此,仅用PHP无法用htaccess解决这个问题。 谢谢大家! 试试这个: .htaccess
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L]
</IfModule>
现在,在
之后将这一行添加到menu.php,该规则只会重定向.html
文件。“RewriteRule^(.*)/(.*).html”的意思是:如果url以.html结尾,则执行重写。您也可以对.php执行同样的操作。将html改为(html | php)进行分组“我已经尝试了许多代码”停止猜测,开始阅读和学习…“如果不包含文件,则重定向”需要一种编程语言。htaccess不是专门为它设计的。我知道这意味着什么,它会将所有不存在的html
文件写入我的index.php
,加载这些语言,头和身体。在正文部分中,我包含了menu.php
,它编写ul
s,以及li
s从MySQL获取数据。我只想让任何人从index.php
中查看我的菜单.php
。如果我重写我的菜单.php
,它就不能被包括在内,但是如果我没有重写,他们可以在没有页面其他部分的情况下看到它。谢谢,使用$inscript
定义是否更好?函数在运行时定义命名常量。对于这样的任务,我更喜欢常量而不是变量。如果必须使用变量,然后将其加载到函数中,则必须先使用global$inscript
,然后才能在函数中使用它。使用常量(可以通过所有脚本全局访问)更容易。
define('_IN_SCRIPT_)', true);
if (!defined('_IN_SCRIPT_') || !_IN_SCRIPT_) {
exit('Direct access not allowed.');
}