0

apache と .htacess を使用して URL を書き換えています。

ad.php ページにオプションのパラメータ「mess」を追加したいと考えています。私が書いた :

RewriteRule    ^ad-([A-Za-z0-9-]+)/?$    ad.php?id=$1    [NC,L]
RewriteRule    ^ad-([A-Za-z0-9-]+)-([A-Za-z0-9-]+)/?$    ad.php?id=$1&mess=$2    [NC,L]

しかし、最初のルールだけが考慮されているようです。ad-100 と ad-100-1 は異なるものを提供するはずですが、そうではありません。最初のルールを削除すると、ad-100 は (明らかに) 機能しなくなり、2 番目のルールを使用しているため、ad-100-1 が機能するようになりました。

オプションのパラメーターを使用する方法を知っていますか? 2 つのルールを 1 つに結合する必要がありますか?

4

1 に答える 1

2

これはうまくいくはずです:

RewriteCond %{REQUEST_URI}             !ad\.php              [NC]
RewriteRule    ^ad-([^-]+)/?$           ad.php?id=$1         [NC,L]
RewriteCond %{REQUEST_URI}             !ad\.php              [NC]
RewriteRule    ^ad-([^-]+)-([^/]+)/?    ad.php?id=$1&mess=$2 [NC,L]

messオプションで、パラメーターが 1 つしかないときに値を空にしても問題がない場合は、両方のパラメーターに 1 つのルールを使用できます。このような:

RewriteCond %{REQUEST_URI}             !ad\.php              [NC]
RewriteRule    ^ad-([^-]+)-?([^/]+)?/? ad.php?id=$1&mess=$2  [NC,L]
于 2013-03-29T11:54:25.397 に答える