1

我正在尝试重写我的网址,但仍然没有成功。我用谷歌搜索了两天,但没有成功。我正在粘贴我的 .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 否则如果单击两个按钮,那么它应该重定向 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

我要显示的实际网址应如下所示:
localhost/project/

4

2 回答 2

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');
于 2013-05-02T09:33:40.487 回答
-1

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

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

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

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

于 2013-05-02T07:25:27.577 回答