htaccessを使用してフラットリンクを書き直す際に問題が発生しています。完全にうまく動作する2つのルールセットがありますが、一緒にすると望ましくない影響があります。.HTACCESS MOD_REWRITE FLAT Links問題
最初のセクションには、スラッシュがない場合は後ろにスラッシュが追加され、301の転向でURLが書き換えられます。
第2は、すべての「フォルダ」をパラメータに変換し、特定の形式でphpに渡します。
ページに応じて不明なフォルダ数がありますので、コードを一般的なものにしておきたいと思います。
問題は、コード機能が機能します(つまり、phpに正しいパラメータが入力されています)が、URLが間違った形式で書き換えられるという問題です。
PHPコード:
<?php echo ‘<pre>’;print_r($_GET); echo ‘</pre>’;?>
サンプルURL:(削除HTTP://質問ごとに2つのリンクに制限される)
localhost/foo/bar
が
test.localhost/foo&other[]=bar/
に再書き込みされます出力:
Array
(
[p] => foo
[other] => Array
(
[0] => bar
)
)
あなたはhtaccessファイルの最初の部分を削除した場合、出力は同じで、URLが残る:
localhost/foo/bar
はhtaccessファイル:
Options +FollowSymlinks
RewriteEngine on
SECTION 1:
RewriteCond %{REQUEST_URI} !.*/$
RewriteRule (.*)$ /$1/ [L,R=301]
SECTION 2:
RewriteRule ^(.*)/([^/]+)/?$ $1&other[]=$2 [L]
RewriteRule ^(?!index\.php)([^/]+)/?$ /index.php?p=$1 [L,QSA]
私はあなたがしたいことと何が問題なのかと混同しています。あなたはそれを明確にしてください - そのようなURLの1つまたは2つの例を提供してください:ブラウザでどのように見え、どのようにそれらをPHPスクリプト(書き換え)に送るかを指定してください。私が理解しているように、 'http:// example.com/foo/bar' =>' http:// example.com/foo/bar/'=> ???(PHPに送信される最終的なURL) – LazyOne
http:// localhost/foo/barを変更しようとしているので、必要に応じてスラッシュが追加され、print_r $ _GETのときに配列があります[p] => foo [other] =>配列([0] => bar))。ローカルホストの後の最初の部分はpの値になり、残りはもう一方の配列に配置されます。これとは別に、元の投稿の条件/ルールは機能しますが、一緒に使用すると問題が発生します。これが明確になることを願って – 64k