url从url重写隐藏文件夹名称

时间:2013-05-02 07:19:13

标签: php .htaccess

我正在尝试重写我的网址,但仍未获得成功。我用两天的谷歌搜索,但没有成功。我正在粘贴我的.htaccess代码

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} localhost [NC]
RewriteCond %{REQUEST_URI} !^/folder1/
RewriteRule ^(.*)$ /folder1/$1 [L]

这是我的目录:

localhost/project/index.php

在这个页面中有两个按钮。如果单击按钮一次,它应该重定向到folder1 / index.php否则如果单击按钮2则应该重定向folder2 / index.php

localhost/project/folder1/index.php
localhost/project/folder2/index.php

Basically I don't want display folder1 or folder2 directory names.
any idea please thanks

我要显示的实际网址应如下所示:
本地主机/项目/

2 个答案:

答案 0 :(得分:0)

我不相信你能单独用mod_rewrite做你要求的。

问题是您正在尝试将1个文件重写为2个不同的位置:

/project/index.php -> /project/folder1/index.php
/project/index.php -> /project/folder2/index.php

使用此逻辑,mod_rewrite不知道客户端点击了哪个链接,folder1或folder2。

为了实现您的目标,您需要在客户端设置一个cookie,指示他选择“文件夹” - 然后使用PHP来确定最佳操作。这是一个给你一个想法的例子。此代码尚未准备就绪。

<强> /project/index.php:

$cookie_folder = $_COOKIE['folder'];
if($cookie_folder == "folder1")     { $folder = 'folder1'; }
elseif($cookie_folder == "folder2") { $folder = 'folder2'; }
require_once('/absolute/path/to/project/' . $folder . '/index.php');

答案 1 :(得分:-1)

我假设您想要的是浏览器请求/index.php,但服务器实际使用位于/folder1/index.php的文件,对吧?如果是这样,这应该有效:

确保已安装apache mod_rewrite模块。然后,在apache配置,虚拟主机配置或.htaccess文件中使用类似的内容:

RewriteEngine On
RewriteRule ^/(.*)$   /folder1/$1

规则使用正则表达式,因此如果您不确定,可能需要查看该主题的参考。阅读手册以获取有关其他指令的更多信息(RewriteCond可能非常有用)或规则选项。