1

私は自分のURLをクリーンアップするためにmod-rewriteを実装しようとしています。私はこれまでこれをしたことがありません。

以下は私のURLの1つの例です:

http://www.example.com/listings.php?category=Accident%20and%20Crash%20Repairs

ファイルlistings.phpは私のサイトのルートレベルにあります。

サーバーでmod-rewriteが有効になっていることをテストし、正しく機能していることを確認しました。

空のファイルから始めて、URLを書き換えるために.htaccessファイルを作成しようとしています。これが私がこれまでに試したことです:

RewriteEngine On
RewriteRule ^([^/]*)\.html$ /listings.php?category=$1 [L]

RewriteEngine On
RewriteRule ^/listings.html$ /listings.php?category=Accident%20and%20Crash%20Repairs [L]

次の例では、スタックオーバーフローに関する別のクエリへの回答に大まかに基づいて、URLを変更する部分を取得しようとしていました。

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteBase /
 RewriteRule    ^lineage/?$    listings.php   [NC,L]
</IfModule>

私はもっ​​と多くの組み合わせを試し、いくつかのチュートリアルに従いました。言うまでもなく、何も機能していません。

可能であれば、URLを次のように表示したいと思います。

http://www.example.com/listings/accident-and-crash-repairs

しかし、そうでなければ、変数がまったく表示されないことで解決します。

誰かが私がどこで間違っているのかを指摘したり、何らかの方法でこれを解決するのを手伝ってくれますか?

どうもありがとう。

4

1 に答える 1

1

mod_rewriteと.htaccessを有効にしてからhttpd.conf、次のコードを.htaccessアンダーDOCUMENT_ROOTディレクトリに配置します。

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

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+listings/[^\?\s%20]+\s [NC]
RewriteRule ^listings/([^-]+)-([^-]+)(.*)$ listings/$1\%20$2$3 [L,NC]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+listings/[^\?\s%20]+\s [NC]
RewriteRule ^listings/([^-]+)/?$ listings.php?category=$1 [L,NC,QSA]

RewriteCond %{QUERY_STRING} ^(category)=([^%20]+)%20([^%20]+)(.*)$ [NC]
RewriteRule ^(listings\.php)/?$ $1?%1=%2-%3%4 [R=302,L,NC,NE]

RewriteCond %{QUERY_STRING} ^category=([^\s%20]+)$ [NC]
RewriteRule ^(listings)\.php/?$ $1/%1? [R=302,L,NC,NE]

この再帰ベースのルールが設定されると、のURI/listings/accident-and-crash-repairsがに転送されます/listings.php?category=accident%20and%20crash%20repairs

また、のURIは/listings.php?category=accident%20and%20crash%20repairs外部からにリダイレクトされ/listings/accident-and-crash-repairsます。

動作を確認したら、に変更R=302R=301ます。

于 2012-05-18T14:52:10.127 に答える