0

zeusプラットフォームからapacheに移行していて、次の書き換えで問題が発生しています。

/12345-somepage.html
/event.php?ref=12345

これは.htaccessです

RewriteEngine  on
RewriteRule    ^/([0-9]*)- /event.php?ref=$1 <-- This doesn't work 404 not found
RewriteRule    ^otherpage.htm  index.php?Month=0&Category=otherpage <- This one works

これは、既存のZeus書き換えルールです。

match URL into $ with ^/([0-9]*)-
if matched then set URL = /event.php?ref=$1

ターゲットアドレスが機能することを確認しました。/event.php?ref=12345

4

1 に答える 1

1

デフォルトRewriteBaseはです/。これが先頭/に一致しない理由です。予期しない動作を防ぐためにを設定し、この一致後にApacheが次の書き換えの処理を停止するようRewriteBaseに修飾子を追加し、元のURLからクエリ文字列を追加するために追加します[L][QSA]

これは機能します:

RewriteEngine On
RewriteBase /

RewriteRule    ^([0-9]+)- /event.php?ref=$1 [L,QSA]

私のevent.php

<?php 
echo $_SERVER['PHP_SELF'];
echo "\n";
print_r( $_GET ); 
?>

出力

# curl -i http://localhost/1234-mypage.html
HTTP/1.1 200 OK
Date: Sat, 01 Dec 2012 22:57:28 GMT
Content-Type: text/html

/event.php
Array
(
    [ref] => 1234
)
于 2012-12-01T22:59:34.393 に答える