我尝试过很多代码,但都没有。如果PHP不包含该文件,有没有办法用htaccess重定向。
到目前为止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的原因。
答案 0 :(得分:3)
试试这个:
<强>的.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>
这样做,如果您的服务器中存在文件,例如/en/introduction.html
,它将加载该文件。这适用于文件夹和链接。
然后将所有其他请求转发到index.php
现在,在index.php
中,您可以使用$_SERVER['REQUEST_URI']
并解析网址结构并执行您想要的操作。
至于禁止直接访问menu.php
...
在<?php
代码后将此行添加到 index.php :
define('_IN_SCRIPT_)', true);
现在,在<?php
代码
if (!defined('_IN_SCRIPT_') || !_IN_SCRIPT_) {
exit('Direct access not allowed.');
}
现在,当你在index.php中包含menu.php时,脚本将会起作用。如果有人直接在浏览器中访问了menu.php,他们就会收到错误。
答案 1 :(得分:0)
所以只有PHP才能用htaccess来解决它。 谢谢!