1

それで、私は何とかいくつかを書くことができました、RewriteCondそしてRewriteRule私がしばらく前に開発したカスタムサイトのために、そして私はこれらすべての初心者なので、誰かが私のコードをレビューして、改善するものがあるかどうかを教えてくれることを期待していましたそのままでいいです。

私が達成しようとしているのは、から/?mod=x/x、から/?mod=x&type=y-zへの変換です/x/y-z

そして、これが私が今までにしたことです:

# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]

RewriteCond %{REQUEST_URI} /([a-z]+)/([a-z\-]+)$ [NC]
RewriteRule ^([^/]*)/([^/]*)$ /?mod=$1&tipo=$2 [NC,L]

RewriteCond %{REQUEST_URI} /([a-z]+)/?$ [NC]
RewriteRule ^([^/]*)$ /?mod=$1 [NC,L]

だから、すべて大丈夫ですか?または、改善の余地はありますか?

4

1 に答える 1

1

RewriteCondこれらの行を組み合わせて、 :を削除できます。

RewriteCond %{REQUEST_URI} /([a-z]+)/([a-z\-]+)$ [NC]
RewriteRule ^([^/]*)/([^/]*)$ /?mod=$1&tipo=$2 [NC,L]

RewriteCond %{REQUEST_URI} /([a-z]+)/?$ [NC]
RewriteRule ^([^/]*)$ /?mod=$1 [NC,L]

に:

RewriteRule ^([a-z]+)/([a-z\-]+)$ /?mod=$1&tipo=$2 [NC,L]

RewriteRule ^([a-z]+)$ /?mod=$1 [NC,L]

それ以外の場合、これは問題ないように見えます。


(htaccessに関して)最後の改善を1つ追加しようとしています。それは、/?mod=inicioを/inicioにリダイレクトしたいということです。だから私は次のコードでそれをやろうとしていますが、それはこの/ inicio?mod=inicioのようなURLを構築し続けます

このルールは、他のルールと直接競合します。一方のルールのターゲットはもう一方の正規表現の一致であるため、これらは相互に書き換えます。?また、実際のクエリ文字列を削除するには、ターゲットの最後にが必要です。実際のリクエストと照合する必要があります。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?mod=([a-z]+)
RewriteRule ^ /%1? [L]
于 2012-09-18T20:34:36.860 に答える