0

GET は、値とともにファイル拡張子を取得しています。ここに私の.htaccessがあります -

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^test/(.*)/(.*)/$ /Test3.php?u=$1&i=$2 [NC,L]
RewriteRule ^test/(.*)/(.*)$ /Test3.php?u=$1&i=$2 [NC,L]
RewriteRule ^test/(.*)/$ /Test3.php?u=$1 [NC,L]

ファイル Test3.php は次のようなものです -

<?php
echo $_GET['u'];
echo '<br/>';
echo $_GET['i'];
?>

私が渡している URL - http://example.com/test/something/more/

私のブラウザの出力 -

something/more.php

目的の出力はどこですか

something
more

これを修正するためにウェブサイト全体をスクレイピングしましたが、うまくいきません。最後にそのphpを取得し、http://example.com/test/の後に完全な値を取得する理由が最初のパラメーターのみにある理由がわかりません。

助けてください !

皆さんありがとう !問題はこの行から来ていると思います。これに関する解決策を提案してください。

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php http://www.example.com/$1 [R=301,L]
4

2 に答える 2

3

私は RewruteRules の専門家ではありませんが、いくつかの正規表現と次のことは知ってい.*ます。

^test/(.*)/(.*)/$

/ を含むすべてのものに一致することを意味します。

あなたは試してみたいかもしれません:

RewriteRule ^test/([^/]+)/([^/]+)/?$ /Test3.php?u=$1&i=$2 [L,NC]
//removed this one because they are basically the same
//by adding '/?' it says that the slash is optional
RewriteRule ^test/([^/]+)/?$ /Test3.php?u=$1 [L,NC]

誰かが正規表現に提案をしたいかもしれませんが、それはあなたの目的に合うと思います.

編集: または、 https://stackoverflow.com/a/14663292/1700963のようなことができます

誰かがより良い例を持っている場合は、編集またはコメントしてください。

于 2013-02-02T19:18:13.983 に答える
1

コメントで言及していた貪欲なことを説明するページを見つけました: http://www.mspo.com/how-to/greed-in-apache-rewrite-rules.html

于 2013-02-02T19:19:23.517 に答える