0

すべてのページ拡張を削除するためにmodrewriteを有効にしました...

これは、WindowsでApacheを使用しているため、httpd.confで実行されます。

私が持っているセットアップは

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteCond %{SCRIPT_FILENAME} !-d
   RewriteRule ^([^\.]+)$ $1.html [NC,L]
</IfModule>

そしてこれはdomain.com/bookings.html

として表示されるdomain.com/bookings

htmlファイルでphpを有効にしているので、phpのすべてのページを解析します

しかし、今は自分のサイトに検索ボックスを配置しました。「音楽」を検索すると、次のURLが使用されます。

domain.com/search?q=music

URLを次のようにしたいと思います。

domain.com/search/music

でもまた、タイプできるようになりたいです

domain.com/search/abba

そして、ページ「search.html」をロードして「search」と呼び、パラメータ?q = abbaを追加しますが、URLバーでは上記の例のようになります。

これはmodrewriteで実現できると確信していますが、式の表現方法がわかりません。

私が受ける助けを事前に感謝します:)

4

2 に答える 2

0

HTMLで次の種類のURLを使用します。domain.com/search/music

.htaccessこれをDocumentRootのファイルに追加します。

Options +FollowSymLinks +Indexes -MultiViews
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} (search)/([\w\d]+) [NC]
RewriteRule ^ %1.html?q=%2 [L,QSA]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

.confまたはこれをファイルに追加します

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On

    RewriteCond %{REQUEST_URI} (search)/([\w\d]+) [NC]
    RewriteRule ^ %1.html?q=%2 [L,QSA]

    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteRule ^([^\.]+)$ $1.html [NC,L]
</IfModule>
于 2012-02-07T20:42:29.417 に答える
0

単純なRewriteRuleを1つ追加するだけです。

RewriteRule ^/search/([a-zA-Z0-9]+)$ /search?q=$1 [QSA,NC,L]

全体として:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteCond %{SCRIPT_FILENAME} !-d
   RewriteRule ^([^\.]+)$ $1.html [NC,L]
   RewriteRule ^/search/([a-zA-Z0-9]+)$ /search?q=$1 [QSA,NC,L]
</IfModule>

あっ、そういえば:

そしてそれが十分でない場合:

2つのヒント:

ホストされた環境にいない場合(=それが独自のサーバーであり、ファイルだけでなく仮想ホストを変更できる場合)、ディレクティブを使用してみてください。このような問題を追跡するのに役立ちます。.htaccessRewriteLog

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

正規表現をチェックするための私のお気に入りのツール:

http://www.quanetic.com/Regex(preg(PCRE)の代わりにereg(POSIX)を選択することを忘れないでください!)

于 2012-02-07T21:02:28.807 に答える