1

htaccessファイル

RewriteEngine On
RewriteRule ^(.+)$ index.php?url=$1 [PT,L]

URL mod_rewrite に追加するものは何でもそれをキャッチし、それに GET 変数 url を入れて、バックグラウンドでユーザーを私の index.php ページにリダイレクトします。

例:

http://www.mysite.com/members/profile

私のindex.phpページで、urlパラメータを画面に出力すると、

members/profile

それが私が望んでいることですが、問題は次のようなものを URL に追加するときです。

members/profile##

また

members/profile...

おそらく、他の特殊文字のロード mod_rewrite は次のもののみをキャッチするようです:

members/profile

何らかの理由で最後の文字を除外します。

URLのすべての文字をキャッチする必要があるため、それは望ましくありません。URL全体をキャッチしていない理由を知っている人はいますか? ありがとう。

4

1 に答える 1

1

.htaccess次のファイルを使用してコードをテストしました。

RewriteEngine On
RewriteRule ^(.+)$ index.php?url=$1 [PT,L]

そしてこのphpスクリプトはindex.php

<?php
echo '$_GET[\'url\'] = "' . $_GET['url'] . '"';
?>

確かに、それは機能しませんでした。しかし、何も機能しませんでした。あなたが説明したことでさえも機能しませんでした。では、なぜそうなるのでしょうか。フラグQSAGETを追加しない限り、Apacheはパラメータをスクリプトに渡しません。したがって、ファイルを次のように変更すると、コードは機能します。.htaccess

RewriteEngine On
RewriteRule ^(.+)$ index.php?url=$1 [PT,L,QSA]

あなたが抱えていた問題の1つは、ハッシュタグがPHPスクリプトに渡されなかったことです。残念ながら、それはあなたが解決できないものです。これは、最初のハッシュで始まるすべての文字がブラウザによってWebサーバーに渡されるわけではないためです。したがって、派手なJavaScriptを使用しない限り、これらの文字を取得することはできません。

于 2012-11-25T14:02:25.107 に答える