0

http://localhost/clean_urls/user/whtffghこれにうまくリダイレ​​クトしますhttp://localhost/clean_urls/user/whtffgh/(私がそこに置いたものはほとんど何でも動作します)。

http://localhost/clean_urls/user/cohenただし、これにリダイレクトされ、 http://localhost/clean/理由がわかりません。追加するだけです/

Heres 私の .htaccess コード

<ifModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteRule ^(.*)$ /clean_urls/user/$1/ [L,R=301]

    RewriteBase /clean_urls/user/

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^([a-zA-Z0-9]+)/$ index.php?user=$1


</ifModule>

アップデート:

ユーザー名としてcohenを入力した場合以外にも、コードは機能します。.htaccess ファイルの 2 番目の部分は、URL で見栄えがよく、(明らかに) SEO に適した単なる $_GET 変数のように見えますuser/index.php?user=usernameuser/username

私はこのことを学んでいて、それを試すためにwebappを作っているので、どこに行くのかよくわかりませんが、最後に別の変数が必要になると思います.http:://localhost/clean_urls/user/fred/someverb

4

1 に答える 1

1

RewriteBase ディレクティブの使用目的を誤解しています。これは、「ディレクトリごと」のコンテキストで書き換えエンジンが相対 URI を正しいファイル名に相当するものに変換するのに役立ちます。

ファイルごとに1 つのRewriteBase ディレクティブのみを含める必要があり.htaccessます。デフォルトでは、書き換えエンジンは、ディレクティブが設定さ.htaccessれたパスの最下位のファイルを使用します。RewriteEngine On

したがって、DOCroot (「GET /xxx」がマップされているディレクトリ) では、これは

RewriteBase /

あなたの.htaccessファイルが入っDOCroot/clean_urls/userているなら、それは持っているべきです

RewriteBase /clean_urls/user/

フォームの URI をどのようにデコードしたいですか、http:://localhost/fredそれともフォームの URI を処理したいだけですかhttp:://localhost/clean_urls/user/fred/。どうhttp:://localhost/clean_urls/user/fred/someverbですか?

あなたがどこにあなたを置いているかを私に知らせてください.htaccess。そうすれば、適切なコンテンツを提供できます.

于 2012-07-06T12:10:44.113 に答える