0

内部で URL フォルダー構造をクエリ文字列に mod_rewrite しようとしていますが、元の URL を保持しています...つまり。http://www.mysite.com/employers/events/2013/02
は次の ようになります:
http://www.mysite.com/employers/events/?e_year=2013&e_month=02
...内部的に。ブラウザーから、元のフォルダー ベースの URL を確認したいと思います。私の努力では、URL は適切に書き換えられていますが、ブラウザーには代わりにクエリ文字列の URL が表示されます。私のコードは次のとおりです。

RewriteEngine On

RewriteRule ^employers/events/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ /employers/events/?e_year=$1&e_month=$2 [L]
RewriteRule ^employers/events/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ /employers/events/?e_year=$1&e_month=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

2 番目のルールは、末尾のスラッシュでバージョンをキャッチするだけです。

事前に感謝します。これは私に大きな苦痛を引き起こしています。

アップデート:

これは渡されているものです:

Array ( [q] => employers/events/ [e_year] => 2013 [e_month] => 02 )

つまり、MODx は明らかに内部で物事を妨害しています..最高のニュースではありませんが、少なくとも少し閉鎖されています!

4

1 に答える 1

1
  1. RewriteBase /.htaccessファイルがドキュメント ルートにある場合は何もしません。それを除く
  2. 置換にスラッシュ接頭辞は必要ないと思います。また、この単一のルールを試してください

    RewriteRule ^employers/events/(\d{4})/(\d{2})/? employers/events/?e_year=$1&e_month=$2 [L,QSA]
    

これをローカルでテストしましたが、次の.htaccessファイルを使用して正常に動作します

RewriteEngine on
RewriteRule ^a/b/(\d{4})/(\d{2})/? /a/b/?y=$1&m=$2 [L,QSA]

アップデート

スタンドアロンの例を使用すると、書き換えルールにより、次のクエリ パラメータが MODxindex.phpファイルに渡されるはずです。

Array
(
    [q] => employers/events/
    [e_year] => 2013
    [e_month] => 02
)

これでMODxが何をするのか、私には言えません

于 2013-02-11T23:42:37.297 に答える