1

私は URlRewriting が初めてで、URL の書き換えに問題がありました。URL 変数に応じて php を使用してコンテンツが埋められる単一の .php インデックス ページがあります。

私の問題は、それを機能させるための正しい式が見つからないように見えることです。私のホームページでは、次のような1つの変数のみを送信しています

"index.php?page=home"

しかし、他のページでは、「index.php?page=about&content=about-news&id=27&pn=1」のように最大 4 つの変数を使用しています。

今、私は1つまたは2つを別々に動作させることができましたが、一緒に使用することはできませんでした:

RewriteRule ^((.*)+)$ index.php?page=$1

また

RewriteRule ^(.*)/(.*)$ index.php?page=$1&content=$2

過去数日間、Google と Stackoverflow を見回してきましたが、有効な解決策が見つからないようです。これを機能させる方法について何か考えがある人はいますか? 乾杯

4

2 に答える 2

2

試す:

#Make sure it's not an actual file
RewriteCond %{REQUEST_FILENAME} !-f 

#Make sure its not a directory
RewriteCond %{REQUEST_FILENAME} !-d 

#Rewrite the request to index.php
RewriteRule ^(.*)$ index.php?/$1 [L]

次に、$ _ SERVER ['REQUEST_URI']変数を調べて、何が要求されたかを確認できます。

それはあなたのために働くはずです、あなたがどのように乗るかを私に知らせてください。

于 2012-04-26T12:29:05.467 に答える
2

必要なのは 1 回の書き換えだけです。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

次に、index.php ファイルで、ルートをピースに分割します。

$route = (!isset($_GET['route']))?'':$_GET['route']);
$parts = explode('/', $route);

So your old urls like this:
index.php?page=home 
index.php?page=about&content=about-news&id=27&pn=1
index.php?page=$1
index.php?page=$1&content=$2

Become:
Example: `http://example.com/controller/action/do/value`
or       `http://example.com/$parts[0]/$parts[1]/$parts[2]/$parts[3]/$parts[4]`

controller->action->do->value の考え方を維持すると、ルートを簡単に割り当てることができます。

?page=あなたのコントローラーになります

?content=あなたの行動になります

?id=あなたのサブアクションになります| する | 価値のect

于 2012-04-26T12:31:58.923 に答える