1

URL を書き換えようとしていますが、まだ成功しません。私は2日間グーグルで検索しましたが、成功しませんでした。.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

このページには 2 つのボタンがあります。ボタン 1 がクリックされた場合は、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

表示したい実際のURLは次のようになります:
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 は、クライアントがクリックしたリンク (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');
于 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 に答える