1

誰かが私のウェブサイトの RewriteRule を書くのを手伝ってくれるかどうか疑問に思っています。

次の URL を見て、どのように書き換える必要があるかを確認してください。

http://www.example.com/essays-and-reports/ 
does not need to be re-written, it is a physical folder on the web server.

http://www.example.com/essays-and-reports/business/ 
needs to rewrite to (root)/first_level_template.php

http://www.example.com/essays-and-reports/dynamic_name2
needs to rewrite to (root)/first_level_template.php

http://www.example.com/essays-and-reports/business/financial-reports/ 
needs to rewrite to (root)/second_level_template.php

http://www.example.com/essays-and-reports/blah/financial-reports/C_B_2413_Report_on_savings.php 
needs to rewrite to (root)/final_level_template.php

末尾のスラッシュに関係なく、ルールが機能する必要があることに注意してください。要約すると、関連するテンプレートに書き直す必要がある 3 つのレベルがあります。上記のいずれも、最終レベルの PHP ファイルを含め、サーバー上に物理的に存在しません。存在する唯一のものは、ウェブサイトのメイン フォルダーであるエッセイ アンド レポート フォルダーです。

このようなことを試しましたが、ログにコンパイルエラーが表示されます。

RewriteRule ^([^/]+)/([^/]+)/?$ /second-level-template\.php [L]

必要なルールを書くのを手伝ってくれたら、とても感謝しています。

編集: このコードの種類は機能しますが、必要のないエッセイとレポートのフォルダーも書き換えます...

Options +FollowSymLinks
RewriteEngine On

RewriteBase /essays-and-dissertations/
RewriteRule ^[^/]+/[^/]+/[^/]+/?$ /final_level_template.php [L]
RewriteRule ^[^/]+/[^/]+/?$ /second_level_template.php [L]
RewriteRule ^[^/]+/?$ /first_level_template.php [L]
4

1 に答える 1

0

3 つのルールでこれを行うことができます。

RewriteRule ^essays-and-reports/[^/]+/?$ /first_level_template.php [L]
RewriteRule ^essays-and-reports/[^/]+/[^/]+/?$ /second_level_template.php [L]
RewriteRule ^essays-and-reports/[^/]+/[^/]+/[^/]+/?$ /final_level_template.php [L]

リダイレクト ターゲットのドットは正規表現ではないため、エスケープする必要はありません。

于 2012-06-27T08:40:39.963 に答える