.htaccess 将文件从根目录传输到其他目录时重写规则
以前,很多项目文件都在根目录中。根目录中包含以下文件:.htaccess 将文件从根目录传输到其他目录时重写规则,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,以前,很多项目文件都在根目录中。根目录中包含以下文件: index.php make.php 为了使文件结构更具逻辑性,已将上述文件移动到/operation/文件夹中 问题:如果希望以下链接仍能正常工作,如何在.htaccess中编写重定向规则: https://example.com/ https://example.com/?var=value https://example.com/make.php 这样,客户机甚至不会猜到,事实上,对文件的访问: https://example
index.php
make.php
为了使文件结构更具逻辑性,已将上述文件移动到/operation/文件夹中
问题:如果希望以下链接仍能正常工作,如何在.htaccess中编写重定向规则:
https://example.com/
https://example.com/?var=value
https://example.com/make.php
这样,客户机甚至不会猜到,事实上,对文件的访问:
https://example.com/operation/
https://example.com/operation/?var=value
https://example.com/operation/make.php
如果在.htaccess文件中指定如下规则:
RewriteEngine On
RewriteRule ^/?$ /operation/
RewriteRule ^/(.*\.php)$ /operation/$1
然后正常工作,但不工作。由
重写规则
模式匹配的URL路径在每个目录.htaccess
文件中不以斜杠开头,因此regex^/(.\.php)$
从不匹配,请求也不会被重写
但是,您的问题文本说明了3个需要重写的URL,但是您发布的代码看起来似乎是为了匹配“any”.php
文件。这就是目的吗?或者这会与根目录中的其他.php
文件冲突吗
要重写这3个URL,请执行以下操作:
RewriteEngine On
RewriteRule ^(index\.php)?$ /operation/index.php [L]
RewriteRule ^(make\.php)$ /operation/$1 [L]
您应该直接重写到处理请求的文件,即第一条规则中的index.php
。否则,您将依赖mod_dir为DirectoryIndex发出额外的内部子请求。第一条规则捕获对/
和/index.php
的请求。默认情况下,将传递查询字符串
不要忘记
L
标志,否则,处理将继续(不必要地)。此解决方案适合我:
RewriteEngine On
RewriteBase /
RewriteRule ^([^/]*)$ /operation/$1 [NC]
你试过这个吗<代码>重写规则^/(.*)\.php$/operation/$1
RewriteEngine On
RewriteBase /
RewriteRule ^([^/]*)$ /operation/$1 [NC]