0

これが私が達成しようとしているものです

www.example.com/category
www.example.com/category/subcategory
www.example.com/category/subcategory/product
www.example.com/static-page (like /about-us, /contact, /our-services)

(カテゴリ、サブカテゴリ、製品、静的ページなどは動的テキストであり、データベースにはパーマリンク foreach があります)

上記のリクエストをすべて見ると、リンクがクリックされるたびにディレクトリ sturcutre を 1 ステップ拡張するようなものであることがわかります。たとえば、最初はカテゴリで、次にサブカテゴリをクリックすると、カテゴリ/ に送信されました。 subcategory/ そして最後に商品ページへ

誰でもこれを達成する方法を手伝ってくれます。これを達成するために多くのことを試みましたが、まだ無駄です。現在、私はこの .htaccess を使用しています

RewriteRule c/(.*)/(.*)/ cat-details.php?permalink=$1&subcat=$2
RewriteRule c/(.*)/(.*) cat-details.php?permalink=$1&subcat=$2

RewriteRule news/(.*)/(.*)/ news-detail.php?news-id=$1&permalink=$2
RewriteRule news/(.*)/(.*) news-detail.php?news-id=$1&permalink=$2

RewriteRule d/(.*)/(.*)/(.*)/(.*)/ download-detail.php?download-id=$1category=$2&subcategory=$3&permalink=$4
RewriteRule d/(.*)/(.*)/(.*)/(.*) download-detail.php?download-id=$1category=$2&subcategory=$3&permalink=$4 

ご覧のとおり、リンクごとに c/、news/、d/ などを追加する必要があります。これを取り除こうとしており、c/、news/、d/ などを処理せずにリンクを作成したいと考えています。

4

2 に答える 2

0

私は自分で方法を見つけました。私と同じように困っている人を助けることができるかどうかを投稿するだけです:p

    RewriteRule ^([^/]*)\/$ /romuniverse/cat.php?permalink=$1 [L]
    RewriteRule ^([^/]*)/([^/]*)\/$ /romuniverse/sub-cat.php?permalink=$1&subcat=$2 [L]
    RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.rar$ /romuniverse/download-detail.php?download-id=$1&category=$2&subcategory=$3&permalink=$4 [L]
于 2013-08-09T23:33:37.333 に答える
0

これを適切な Apache で実行できる唯一の方法は、どの URL がどのスクリプトにマップされているかに関する情報を提供することです。Apache ではRewriteMapディレクティブを使用してこれを行うことができますが、.htaccess ファイルでは機能しません。それがなく、news/またはがなければc/、Apache は URL を適切にルーティングするための十分な情報を持っていません。

あなたができることは、既存のファイルを参照していないすべての URL を、応答で実行するスクリプトを知っているスクリプトに単純に書き直すことです。「ルーター」または「フロントコントローラー」スクリプト、彼らはそれを呼び出します。このようなもの:

RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule (.*)   router.php?path=$1  [QSA]

スクリプトでは、 を調べ$_GET['path']て、リクエストを処理するスクリプトを決定し、それをロード/インクルード/要求します。

于 2013-08-09T22:12:03.577 に答える