用htaccess模拟目录

时间:2019-06-12 11:11:37

标签: apache .htaccess mod-rewrite

当我的主要网站打开时,它会从/home/parsa/public_html中检索内容。

我已经尝试过:rewriteRule "^/(.*)$" "/ppyazi.com/$1"

我需要它从/home/parsa/public_html/ppyazi.com检索文件而无需在用户端重定向到它。

以下是一些示例:

index.php以显示ppyazi.com/index.php

的内容

users/index.php以显示ppyazi.com/users/index.php

的内容

1 个答案:

答案 0 :(得分:1)

  

我已经尝试过:rewriteRule "^/(.*)$" "/ppyazi.com/$1"

.htaccess中,与RewriteRule 模式匹配的URL路径不以斜杠开头。因此,模式^/(.*)$将永远不会匹配,并且您的指令将不执行任何操作。

但是,除非.htaccess子目录中还存在带有mod_rewrite指令的/ppyazi.com文件,否则您需要小心重写循环。

请尝试以下操作:

RewriteEngine On

rewriteRule !^ppyazi\.com\ /ppyazi.com%{REQUEST_URI} [L]

RewriteRule 模式只是检查URL是否尚未以我们正在重写的目录开头。我们使用$1服务器变量来代替RewriteRule反向引用(因为我们没有捕获REQUEST_URI 模式中的任何内容)。请注意,REQUEST_URI包含完整的URL路径,包括斜杠前缀,因此应在 susbstitution 字符串中省略斜杠。

需要使用Llast)标志,以防止文件中稍后(在本轮处理中)发生的任何其他指令被处理。如果这是文件中的最后一个mod_rewrite指令,则它是多余的。但是请注意,在.htaccess中,重写过程实际上是重新开始(直到URL不变),因此其他指令仍然可以处理请求。