Php htaccess-检查HTML中的原始URL是否包含“/`
我有一个目录树,看起来像:Php htaccess-检查HTML中的原始URL是否包含“/`,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我有一个目录树,看起来像: public_html _COMMON INIT.php project-1 index.php project-2 index.php 这两个项目使用来自_COMMON的文件。首先,他们通过index.php中的以下代码加载一些配置: require_once '../_COMMON/INIT.php'; 之后,他们通过以下方式使用公共资源: <script src="../_COMM
public_html
_COMMON
INIT.php
project-1
index.php
project-2
index.php
这两个项目使用来自_COMMON的文件。首先,他们通过index.php中的以下代码加载一些配置:
require_once '../_COMMON/INIT.php';
之后,他们通过以下方式使用公共资源:
<script src="../_COMMON/node_modules/jquery/dist/jquery.min.js"></script>
及
为此,我使用以下访问权限将project1.com
URL重写到project1.com/project-1/
:
RewriteCond %{HTTP_HOST} ^(?:www\.)?project1.com$
RewriteCond %{REQUEST_URI} !/project-1
RewriteRule ^(.*)$ /project-1/$1 [L,NC,QSA]
问题来了。
require\u once
部分起作用,因为在重写请求URL后,INIT.php
的URL被解析,这意味着:
http://project1.com/
http://project1.com/project-1/
http://project1.com/project-1/index.php
http://project1.com/project-1/index.php
与。/\u COMMON/INIT.php
解析为http://project1.com/_COMMON/INIT.php
jquery.min.js
的URL在重写URL之前在浏览器中解析。我猜会发生以下情况:
http://project1.com/
http://project1.com/project-1/index.php提供了
,但URL是http://project1.com/。/\u公共/node\u模块…
,并尝试解决它http://project1.com/_COMMON/node_modules/jquery/dist/jquery.min.js
http://project1.com/project-1/_COMMON/...
不存在的我试过的 我可以补充一点:
RewriteCond %{REQUEST_URI} !/_COMMON
到我的HTA访问并完成
不过,这是一种低俗的解决方案。如果project-1在根目录中使用另一个目录中的文件会怎么样?在htaccess中添加所有这些目录似乎很愚蠢。如果URL不包含\u COMMON
,我不需要重写它,如果它不在目录树上,也就是说,如果它包含。/
,我需要重写它有办法检测吗?
基本上,我想要的是而不是重写以开头的URL。我试过:
RewriteCond %{REQUEST_URI} !\.\./
但它不起作用。我想这是因为。/
是在浏览器中解析的,所以它不在htaccess实际处理的URL中是否有其他方法可以检测包含的原始URL是否未发送到服务器。URL在发送前在浏览器中解析。您可以尝试将RewriteEngine Off
添加到要从重写中排除的每个文件夹中的.htaccess文件中。。/
不会发送到服务器。URL在发送前已在浏览器中解析。您可以尝试将RewriteEngine Off
添加到要从重写中排除的每个文件夹中的.htaccess文件中。
RewriteCond %{REQUEST_URI} !/_COMMON
RewriteCond %{REQUEST_URI} !\.\./