0

この書き直しがなぜ言われたことをしないのか理解に苦しんでいます。注: .htaccess ファイルの最初の書き換えは適切に機能するため、ローカル ホストで mod_rewrite を使用しても問題ありません。

次の形式になることがわかっているURIがあります。

http://localhost/managerhub/my-manager.php?i=1&t=dashboard

サイトが公開されたとき:

http://themanagerhub.com/my-manager.php?i=1&t=dashboard

私の .htaccess ファイルは次のように読み取ります。

RewriteEngine On

RewriteRule ^([a-z\-]+)$ $1.php [L]
RewriteRule ^my-manager-([0-9]+)-([a-z]+)  my-manager.php?i=$1&t=$2 [PT]

次のようなきれいな URL を実現するには:

http://localhost/managerhub/my-manager-1-dashboard

理想的には、最初のキャプチャ グループ ([0-9]+) は必要ありません。結果として得られるクリーンな URL に「i」の値が必要ないためです。理想的には、次のような ID です。

http://localhost/managerhub/my-manager-dashboard

ただし、これまでのところ、書き換えを試してもまったく動作しませんでした。

  • ターゲットの先頭のスラッシュ(必要ではないと思いますが)
  • ターゲットの「&」アンパサンドを & を使用するように変更してみました
  • [PT] パススルー フラグの削除 [L] フラグの有無にかかわらず置き換え
  • ([0-9]+) の代わりに (.*) というパターンで最も「最も」制限の少ない文字クラスを試しました
  • ところで、完璧に機能する最初の RewriteRule を「コメントアウト」しました-そのため、面倒なルールを分離して使用します

これらのどれも機能していません - 2番目の書き換えルールはターゲットURLに影響を与えないので、不一致があったかどうかさえわかりません. 私はまだmod_rewriteに慣れていないので、有益な失敗に頼っているので、正規表現が間違っているかどうかを判断できますが、「zilch」が戻ってきたので無視されていると思われます!!

助けていただければ幸いです-おそらく私の愚かさへのポインタが必要です。ありがとう

4

1 に答える 1

0

あなたのhtaccessファイルは、「managerhub」ディレクトリにあると思います。それが、それらのルールが必要な場所です。ベースも追加する必要がある場合があります。

RewriteEngine On
RewriteBase /managerhub/

RewriteRule ^([a-z\-]+)$ $1.php [L]
RewriteRule ^my-manager-([0-9]+)-([a-z]+)$ my-manager.php?i=$1&t=$2 [L,PT]

ライブ サイトにアクセスしたときに変更する必要があります。次の方法で最初のキャプチャ グループを削除できます。

RewriteRule ^my-manager-([a-z]+)$ my-manager.php?t=$1 [L,PT]

Lフラグは正確に 100% 必要というわけではありません。

于 2013-11-13T22:18:29.320 に答える