0

drupal サイトの .htaccess ファイルにいくつかの書き換えルールを書き込もうとしていますが、まったく機能していないようです。正規表現と mod_rewrite に関する予備知識と経験が不足していることも、原因を解決していないようです。

書き換えようとしている URL は次のとおりです。

ソース:

http://www.mydrupalsite.com/somealphanumericwithspecialchars/somealphanumericwithspecialchars/somealphanumericwithspecialchars/somealphanumericwithspecialchars/Keyword1/Keyword2/UNIQUEID?queryparam1=somenumber

行き先:

http://www.mydrupalsite.com/legacystuff/UNIQUEID

私の .htaccess mod_rewrite コードは

  RewriteEngine on
  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  #This is the only rule written by me others are drupals
  RewriteRule ^(.*)/(.*)/(.*)/(.*)/Keyword1/Keyword2/([0-9]*)?$ legacystuff/content/$5 [R=302]
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

チュートリアルの簡単なブラウジングに基づく私の理解と実装は、最初の 4 つ(.*)は URL の 4 つの英数字の特殊文字と一致し、keyword1 と keyword2 は一定のままであるため、目的地に実際に必要な一意の数値 ID として一致させることができました。 URL (宛先のパラメータ $5) は によってキャプチャされ([0-9*])?ます。ローカル環境のhttpd.confで次の vhost を使用します

<VirtualHost *:80>
DocumentRoot "C:/wamp/www/mydrupalsite"
ServerName mydrupalsite.com
</VirtualHost>

問題は、ローカル サーバーを再起動してキャッシュをクリアした後、ソース URL から宛先 URL へのリダイレクトが行われないことです。私が間違っていた場所とそれを正しくする方法についての助けをいただければ幸いです。

4

1 に答える 1

0

最後にそれが機能するようになり、仮想ホスト設定に RewriteBase を追加し、RewriteRule をその下に末尾に ? を付けて配置しました。私の目的地では、クエリ文字列と L フラグを無視します。httpd.conf で RewriteLog を設定すると、より良い観点から物事を理解するのに役立ちました。これが、drupal で .htaccess を初めて使用する他の人の助けになることを願っています。

RewriteBase /
RewriteRule ^(.*)/(.*)/(.*)/(.*)/Keyword1/Keyword2/([0-9]*)?$ legacystuff/content/$5? [R=301,L]  
于 2012-05-03T15:15:37.697 に答える