.htaccess完全重写URL以在文件夹中显示文件,而不是在root中页面

时间:2016-07-03 14:51:11

标签: php .htaccess

所以,我有当前的文件结构:

ROOT
    -> /public
        -> /user_views
            user_handle.php
            user_profile.php
            user_feed.php
            user_settings.php
    .htaccess

如您所见,文件夹user_views包含客户端可能想要查看的一些可能的视图。我想要的是,将插入网址http://example.com/user/的客户端定向到页面user_handle.php。此handle将充当所有/user/个网页的根文件,因此会通过众多$_GET个请求拆分为这些网页。

到目前为止,我有以下.htaccess,但它不起作用......

RewriteRule ^user/ user_views/user_handle.php [L]

我该怎么做才能让它工作,以便网址http://example.com/user重定向到user_handle文件夹中的user_views文件?

谢谢!

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解您的问题,但似乎您希望user_handle.php位于public/user_views下,作为其余PHP文件的“路由器”并拥有所有请求/ user /(例如/ user /?page = 1)由user_handle.php处理。

如果是这样的话,你的规则似乎是合法的。我注意到的唯一一件事(我可能错了)是你的.htaccess位于public文件夹之外。在这种情况下,您需要将'public /'作为规则的一部分。

我重新创建了你描述的文件夹/文件结构,它使用以下内容为我工作.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^user/ public/user_views/user_handle.php [L]
</IfModule>

这是问题的可能性很小,但您也可能需要仔细检查mod_rewrite,这是您的服务器/本地环境中启用的基于规则的重写引擎。当您在任何PHP文件中调用phpinfo()时,它应显示在“已加载的模块”下。

希望这有帮助。