0

私の最終的な目標は、このようなものを持つことです。

127.0.0.1/サイト/検索/検索用語

それよりも、

127.0.0.1/site/search.php?term=

最初に、2 つのコードを試しました。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ../search.php?term=$1

これを /search というフォルダに入れます。HTACCESS は完全に機能しますが、私の Web サイトでは css が台無しになり、スタイリングなしですべてがプレーン テキストとして表示されます。

第二に、私は試しました

RewriteEngine On
RewriteBase /search/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ../search.php?term=$1

それを 127.0.0.1/site/root に入れます。しかし、127.0.0.1/site/search/searchterm を試してみると、404 が返されました。

誰が私が間違っているのか見ることができますか? 最初のオプションは非常に近いため、修正に向けて取り組むのに最適なオプションであると推測しています。無駄なURLを使用した後に受け取ったページのソースに目を通し、リンク方法に関係があるのではないかと思いますスタイルシート? リンクの完全なアドレス (127.0.0.1/site/main.css) を入力すると機能しますが、すべての jquery インクルードなどで失敗します。いつでも完全なアドレスを入力するのが賢明ですか?バニティ URL を使用しますか?

4

1 に答える 1

1

まず、CSS、JS、画像ファイルで絶対パスを使用していることを確認してください。つまり、これらのリソースへのパスは、スラッシュ/またはhttp://. まだ持っていない場合は、必要なコード変更を行ってください。それが完了したら、次の .htaccess を使用します$DOCUMENT_ROOT( in ではありません$DOCUMENT_ROOT/site):

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^site/search/(.+)/?$ site/search.php?term=$1 [L,QSA,NC]

編集:あなたのコメントによると、URIを小文字にするコードは次のとおりです:

最初に、セクションまたは httpd.conf ファイルの末尾に次の行を追加します。

RewriteMap lc int:tolower

次に、次のようなルールを作成します。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^site/search/(.+)/?$ site/search.php?term=${lc:$1] [L,QSA,NC]
于 2012-06-02T14:35:37.523 に答える