1

この書き換えルールを機能させようとしています。私が欲しいのは(着信URL)です:

http://hostname.com/mywebsite

http://hostname.com/mywebsite/test

http://hostname.com/mywebsite/something/another

to(舞台裏):

http://hostname.com/app.php

http://hostname.com/app.php/test

http://hostname.com/app.php/something/another

一般的なものは無視する必要がある「mywebsite」ですが、URLはそれを表示します

以下の書き換えルールは機能しませんので、助けてください

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^mywebsite(.*) /app.php/$1 [QSA,L]

どんな助けでも本当に良いでしょう。ありがとう!

4

1 に答える 1

1

より信頼性が高く、非常に単純な解決策は次のとおりです。

2つのケースを考えてみましょう。

ケース1:完全なURLリダイレクトが必要な場合は、次の書き換えルールを使用します

RewriteEngine On
#Redirect to app.php/the-rest-of-param
RewriteRule ^mywebsite(.*)$ http://%{HTTP_HOST}/app.php$1 [R=301,L]

URLは以下のように変更されますのでご注意ください

http://hostname.com/mywebsiteからhttp://hostname.com/app.php

http://hostname.com/mywebsite/testからhttp://hostname.com/app.php/test

http://hostname.com/mywebsite/something/anotherからhttp://hostname.com/app.php/something/another

ケース2:完全なリダイレクトが必要ない場合(つまり、URLを変更しない場合)、以下の点を考慮する必要があります。

  1. この場合、要求されたURLは保持されます(つまり、URLは次のようになりますhttp://hostname.com/mywebsite/test
  2. エンドユーザーは内部で何が起こっているのかを認識してはいけないdo not need to bypass your request to app.php/testので、サーバーのオーバーヘッドはなく、代わりにapp.phpへのリクエストをバイパスします(残りは以下のPHPコードで説明します)

以下のルールを使用するだけです

RewriteEngine On
#No redirection, bypass request to app.php
RewriteRule ^mywebsite(.*)$ app.php

今、あなたはのようなパラメータを取得する必要があります/test/something/another?次のコードブロックを使用して取得します。

$param = '';
if (strpos($_SERVER['REQUEST_URI'], '/mywebsite') === 0) {
    //10 => length of "/mywebsite"
    $param = substr($_SERVER['REQUEST_URI'], 10);
}

echo 'URL PARAM: ' . $param;

URLの場合http://hostname.com/mywebsite$paramは空の文字列になります

http://hostname.com/mywebsite/testの場合、$paramは次のようになります。/test

http://hostname.com/mywebsite/something/another/1234の場合、$paramは次のようになります。/something/another/1234

不要な条件付きリクエストバイパスを回避し、パラメータなしでapp.phpへのすべてのリクエストをバイパスしたことに注意してください(パラメータはURLとともに存在するため)

あなたは$_SERVER['REQUEST_URI']のような価値を保持し/something/another/1234$_SERVER['PHP_SELF']に似ていることがわかります/app.php/something/another/1234

これがあなたの問題を解決できることを願っています...

于 2012-09-06T19:32:47.153 に答える