1

私は答えを見つけることができなかったので、そこにあります:

次のような URL を取得する必要があります: //mydomain/index.php?var=username (ユーザーが安全な接続を希望する場合は https://)。

使用したい素敵な URL を使用するには: //mydomain/user/username (これはブラウザーの URL 行にとどまる必要があります) を取得するには: //mydomain/index.php?var=username

.htaccess を次のように構成しました。

RewriteEngine on
RewriteBase /
RewriteRule ^user/([^/]+)/?$ /index.php?var=$1 [L]

しかし、うまくいきません。リダイレクト[R、L]を使用すると正常に動作しますが、ブラウザのURL行にはその後の醜いURLがあります:(

助けてください、何が間違っていますか?

4

1 に答える 1

1

あなたのコメント

エラーは返されず、ページが表示されますが、URL は次のようになります: //mydomain/user/ 代わりに od //mydomain/ なので、すべてのリンク (相対パスを含む) は //mydomain/ //mydomain/... の代わりに user/...)

通常の (予想される) 動作について説明します。ブラウザは、ページが //mydomain/user/userid から提供されていると見なすため、すべての相対リンクはベース パス //mydomain/user/ を使用して解決されます。さらに、htaccess ルールではオプションの末尾のスラッシュが許可されているため、//mydomain/user/userid/ も有効です。このようなリクエストは //mydomain/user/userid/ に関連するすべてのリンクを解決するため、"foo.html" の href は //mydomain/user/userid/foo.html を指します。

ここでの唯一の本当の解決策は、先頭に「/」を追加して、すべてのリンクをルート フォルダーに相対的にすることです。たとえば、次のようなものの代わりに:

<a href="foo.html">
<img src="images/pic.jpg" alt="" />
<link rel="stylesheet" type="text/css" href="css/styles.css" />
<form action="processme.php" method="post">

使用する必要があります

<a href="/foo.html">
<img src="/images/pic.jpg" alt="" />
<link rel="stylesheet" type="text/css" href="/css/styles.css" />
<form action="/processme.php" method="post">
于 2012-11-08T11:45:05.913 に答える