0

Drupal の問題により、奇妙な書き換えの問題があります。Drupal の問題を修正する方法がわからないため、これは一時的な修正になります。

パス/the%20campanile/([0-9]+)/([0-9]+)/(できればスラッシュは省略可能) は、 のエイリアスにする必要があります/campanile/([0-9]+)/([0-9]+)/

私はもう試した:

RewriteBase /
RewriteRule ^campy/([0-9]+)/([0-9]+)/$ campanile/$1/$2/

ただし、404 で失敗します (おそらく書き換えが間違っています)。ワイルドカード ( ) も試しまし*たが、役に立ちませんでした。StackOverflow と他のいくつかのフォーラムで約 16 の投稿に目を通しました。

全体.htaccessは次のようになります。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [QSA]
RewriteRule ^campy/([0-9]+)/([0-9]+)/$ campanile/$1/$2/
RewriteCond %{HTTP_HOST} ^danger-\.palyvoice\.com
RewriteRule ^(.*)$ /category/blogs/danger-zone [L]

私は何を間違っていますか?

4

1 に答える 1

1

^campy/([0-9]+)/([0-9]+)/$のようなものに一致させようとしているときに正規表現を使用する理由がわかりません/the%20campanile/([0-9]+)/([0-9]+)/。グループ化はさておき、campyは決して%20campanile と一致しません。

URI は mod_rewrite によって処理される前にデコードされることに注意する必要があるため、 と照合するので%20はなく、スペースだけを照合する必要があります。

RewriteRule ^/?the\ campanile/([0-9]+)/([0-9]+)/?$ campanile/$1/$2/ [L]

また、ルーティング ルールは他のルールに到達する前にそれを書き換えるため、ルーティングルールの前にこれらのルールが必要です。index.php

RewriteEngine on
RewriteBase /
RewriteRule ^/?the\ campanile/([0-9]+)/([0-9]+)/?$ campanile/$1/$2/ [L]
RewriteCond %{HTTP_HOST} ^danger-\.palyvoice\.com
RewriteRule ^(.*)$ /category/blogs/danger-zone [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [QSA]
于 2012-10-04T05:29:03.193 に答える