2013-05-02 61 views
1

我想重写我的网址,但仍然没有得到成功。我两天后搜索了Google,但没有成功。我粘贴我的.htaccess代码URL重写隐藏文件夹名称从URL

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 
在此页面

有两个按钮。如果一个按钮按下,它应该重定向到文件夹1/index.php文件否则,如果两个按钮按下那么它应该重定向文件夹2/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 

实际工作中的网址,我想显示应该是这样的:
本地主机/项目/

+1

你需要告诉我们你喜欢什么网址每个文件夹显示为。您需要以某种方式区分这两个文件夹。 – 2013-05-02 07:24:04

+0

执行url我想要显示应该是这样的: localhost/project/ – Raheel 2013-05-02 07:33:31

+1

好的,文件名? localhost/project/folder1和localhost/project/folder2还是什么?你不能让localhost/project参考两个不同的位置。 – 2013-05-02 07:38:58

回答

-1

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

确保apache mod_rewrite模块已安装。然后,用在你的Apache配置是这样的,虚拟主机配置,或.htaccess文件:

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

规则使用正则表达式,所以你可能想看看关于这一主题的参考,如果你不确定。阅读手册以获取关于其他指令(RewriteCond可能非常有用)或规则选项的更多信息。

+1

我已经在我的代码中使用此规则,您可以看到最后一行的规则。 – Raheel 2013-05-02 07:36:08

0

我不相信你能够单独使用mod_rewrite来做你正在请求的东西。

的问题是你想1个文件改写为2个独立的位置:

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

有了这个逻辑,mod_rewrite的不知道是什么将客户点击,文件夹1或文件夹2。

为了实现您要查找的内容,您需要在客户端上设置一个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');