1

「list.php?job=11534&name」のように前後にあるものを無視しながら、「job=」の後に来る一連の数字を一致させようとしています。

以下に、これまでに持っているものを投稿しましたが、これは URL に影響を与えていないようです。また、[L] は、ルールが一致する場合のみ、または何があっても書き換えエンジンを停止しますか?

よろしくお願いします。

現在のルール:

    RewriteEngine On
    RewriteCond %{QUERY_STRING} (?:^|&)job=([^&]+)
    RewriteRule ^([0-9]+)$ /positions/job/$1 [L]

    # Removes index.php from ExpressionEngine URLs
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php?/$1 [L]
4

1 に答える 1

2

RewriteRule ^([0-9]+)$ は数字 ( /4666) のみを含むリクエストに一致します。この正規表現は代わりに RewriteCond に配置する必要があり、%1それを参照し、末尾の ? rewriterule で、新しい URL からクエリ文字列を除外します (それが必要ですか?)。

Lルールが一致する場合にのみ、現在の URL の書き換えエンジンを停止します。

RewriteCond %{QUERY_STRING} (?:^|&)job=([0-9]+)
RewriteRule ^.+$ /positions/job/%1? [L]

ユーザーを新しい URL にリダイレクトする場合は、rewriterule オプションに R を追加します ( [L,R=301])。

これらのディレクティブは、クエリ文字列が一致するすべての URLjob=([0-9]+)を新しい URL にリダイレクトすることに注意してください。リダイレクトを特定のリクエスト ( など) に制限したい場合/folder/list.php?job=qsd&name=qsdは、それらを書き換えルールに必ず含めてください。ディレクティブは次のようになります。

RewriteCond %{QUERY_STRING} (?:^|&)job=([0-9]+)
RewriteRule ^folder/list\.php$ /positions/job/%1? [L]
于 2013-03-29T14:23:31.103 に答える