2

サイトを新しいプラットフォームに移行しました。次のような古い URL をマッピングしたい:
anecdotage.com/index.php?aid=13337

anecdotage.com/articles/13336/
[ID の 1 つのオフセットに注意してください]

Apache の mod_rewrite でこれを行うことはできますか。どんな助けでも大歓迎です!

4

1 に答える 1

0

mod_rewrite だけで計算を行うことはできません。つまり、ある種の ` RewriteMap13337を使用して外部から数値を 1 減算することなく、照合して変更することができますが、これにはサーバーまたは vhost へのアクセスが必要です。構成。13336

そのため、vhost/server 構成でマップをセットアップする必要があります。

RewriteMap subtract prg:/path/to/script/that/subtracts-by-one.sh

このsubtracts-by-one.shスクリプトは、数値を入力として取り、そこから 1 を引いて、結果を出力します。次に、書き換えルールで使用します。

# to make sure we aren't clobbering legit requests
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} aid=([0-9]+)
RewriteRule ^/?index.php$ /articles/${subtract:%1}/? [L]

マップを書き換えるアクセス権がない場合は、難しい方法ですべての書き換えを列挙する必要があります。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} aid=12345
RewriteRule ^/?index.php$ /articles/12344/? [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} aid=13337
RewriteRule ^/?index.php$ /articles/13336/? [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} aid=19911
RewriteRule ^/?index.php$ /articles/19910/? [L]

于 2012-09-12T19:34:59.620 に答える