0

私は持っています

RewriteRule    ^([A-Za-z0-9-_≈]+)/?$    page.php?text=$1

のようなヒットを翻訳domain.com/sample_textするにはpage.php?text=sample_text

ただし、次の2つの条件も機能するようにします(同じ結果が得られます)。

1)彼らが行く場合、domain.com/sample_text/私はアドレスバーに末尾のスラッシュを保持して表示したいと思いますpage.php?text=sample_text(今は正しいページに行きますが、cssとjs-pathsはめちゃくちゃです)。

2)彼らが行く場合、domain.com/sample_text/worthlessdata123私は/の後のすべてをdomain.com/sample_text/取り除き、アドレスバーに保持して表示しpage.php?text=sample_textます。

かなり苦労しましたが、正規表現がお粗末で、頭が正常に機能していません。

4

2 に答える 2

3

最初の条件には、あなたが持っているルールで十分です。誰かがに行くとdomain.com/sample_text/、URIはsample_text/一致/page.php?text=sample_textし、ブラウザのURLアドレスバーが変更されていない状態でコンテンツが提供されるはずです。

2番目の条件では、それを処理するためのルールを追加する必要があります。

RewriteRule ^([A-Za-z0-9-_≈]+)/.+$ /$1/ [L,R=301]

これにより、にリダイレクトされますdomain.com/sample_text/worthlessdata123domain.com/sample_text/次に、最初のルールはそこから物事を取得する必要があります。


あなたの最初の問題が何であったかを読み間違えました。ページコンテンツにある相対パス/絶対パスは、余分なスラッシュのために異なるベースを取得しています。のようなものがある場合<img src="images/blah.gif">、相対ベースはブラウザが参照するURLから派生します(サーバーによって内部的に書き換えられるものではありません)。したがって、ブラウザが次のように表示した場合http://domain.com/sample_text、URIベースはです/が、ブラウザが表示した場合、http://domain.com/sample_text/URIベースはになります。/sample_text/これは、何かが存在する場所ではないと推測していimages/blah.gifます。

これを修正するには、ページのヘッダーにベースを含めます。

<base href="/">
于 2012-09-13T01:47:28.320 に答える
1

アセット(js、画像など)の絶対パスを使用して解決する必要がある最初の問題

2番目の問題については、@JonLinのソリューションが必要です。

于 2012-09-13T01:49:04.840 に答える