首页 > 解决方案 > 使用 htaccess 模拟目录

问题描述

当我的主网站打开时,它会从/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

标签: apache.htaccessmod-rewrite

解决方案


我试过这个:rewriteRule "^/(.*)$" "/ppyazi.com/$1"

在与模式.htaccess匹配的 URL 路径中,不以斜杠开头。所以,模式永远不会匹配,你的指令什么也不做。RewriteRule ^/(.*)$

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

请尝试以下操作:

RewriteEngine On

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

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

( ) 标志是必需的Llast以防止在文件中稍后发生的任何进一步的指令被处理(在当前的处理轮次中)。如果这是文件中的最后一个 mod_rewrite 指令,那么它是多余的。但是请注意,在.htaccess重写过程中基本上是重新开始(直到 URL 不变地通过),因此其他指令可能仍会处理请求。


推荐阅读