2011-12-05 23 views
0

私は脳の痙攣を患っています。私はhtaccessを使ってページを書き換えていますが、時には渡される変数には変数に/(スラッシュ)が付きます。時にはスラッシュがあり、時にはそうではありませんが、このすべてが一つの変数として扱われることが非常に重要です。私はstr_replace()-/に切り替えて、データベースに電話をかけるために、すべてのページを書き直すのではなく、たとえば:htaccess正規表現に "/"を付ける

http://www.example.com/accounting/finance.htm 

Accounting/Financeは私が必要とする一つの変数.....それは会計上のディレクトリにないし、その後の会計にfinance.htmというページがありますです。これまでのところ私は何かを持っています

RewriteRule ^([A-Za-z]+.*[A-Za-z]*)\.htm$  mypage.php?page=$1 [L,NC] 

しかし、それは好きではありません。

誰かが私を助けることができますか?

ありがとうございます。コメントへの

REPLY/

に答える私が探している特定のルールは次のようなもの.....

[文字列の開始] ... 1つの以上の文字であります... [1つ以上の文字が続く可能性があります。] .htm [文字列の終わり]

以下の2つの回答は機能していません...私はそれがディレクトリとして扱い続けていると確信しています。実際の "ファイル名"。

([A-Za-z/]*)\.htm 

それは/またはnot-のすべての組み合わせで動作します:できるだけ早く私は前方を削除すると、私は右のあなたを取得する場合、あなたはこの1つだけを必要とする

+1

正規表現上のイム錆びていますが([A-ZA-Z /])のような何かを行うことができますか? –

+0

@DevinM私は[A-Za-z /] +を試してみました。私は[A-Za-z \ /] +と[A-Za-z] + \/* [A-Za-z] + \。htmも試してみました。 – n0nag0n

+0

あなたの例がうまくいかない理由は、 "。*"はURLの最後まで貪欲に食べているので、 ".htm"に一致するものは何も残っていないと思います。 しかし、私はどのURLに一致させたくないのか完全にはっきりしていないので、それ以上に助けてはいけません。このルールが ".htm"で終わるものと一致するようにしますか? – IMSoP

答えて

4

...ページが正常に動作しますスラッシュ/

たとえば

accounting/finance.htm 
test.htm 
+0

これはちょっと微調整して作業しました。 :) – n0nag0n

+0

素晴らしい - 何を微調整しましたか? – Nebel54

+0

私はそこに投げるために必要な他のカスタムキャラクターを持っていました。なぜなら、私に最も悲しみを与えてくれた何らかの理由で、そして理由を知っているのは誰かです。それは今、私が気にするすべてです。 – n0nag0n

2

スラッシュは単なる別の文字です。それとは別に、あなたの正規表現は不必要に複雑に見えます。たとえば、.*[A-Za-z]*.*と異ならず、[NC]フラグを使用すると、を[a-z]に短縮することができます。

あなたの正確なルールは完全には明らかではありませんが、あなたはおそらく、このライン上で何かをしたい:

RewriteRule ^([a-z/]+)\.htm  mypage.php?page=$1 
関連する問題