1

Google とスタック オーバーフローからのクエリ/回答の多くを試しましたが、自分に合ったクエリが見つかりません。

users.php ファイルがあり、users.php?user=username を送信するときは、users/user/username にしたいと考えています。.htaccess で既に php 拡張子を削除しています。

これを行う最善の方法は何ですか?また、必要な適切なファイル構造についてのヘルプも役立ちます。

編集:これが私がこれまでに持っているものです:

Options +FollowSymlinks -MultiViews
RewriteEngine on

# to make `/path/index.php` to /path/
RewriteCond %{THE_REQUEST} ^GET\s(.*/)index\.php [NC]
RewriteRule . %1 [NE,R=301,L]

RewriteCond %{THE_REQUEST} ^GET\s.+\.php [NC]
RewriteRule ^(.+)\.php$ /$1 [NE,R=301,L,NC]

RewriteCond %{REQUEST_URI} !\.php$ [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule . %{REQUEST_URI}.php [L]
4

3 に答える 3

0

ふふっ..みんな同じ答えです!.htaccessファイル内のすべてのコードを削除してから、これだけを確認してください。

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^users/user/([a-z0-9-_]+) /users.php?user=$1 [NC]

[NC]大文字と小文字を区別しない方法で一致させるには、ルールの最後にフラグを使用します。つまり、ルールは文字が大文字または小文字のどちらで表示されるかを気にしません。


/users.phpを含むフォルダーに/htmlの資格がある場合は、これを試してください。

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^users/user/([a-z0-9-_]+) /html/users.php?user=$1 [NC]

users.phpを含むフォルダーの名前として「html」を変更するだけです。


さて、このルールを確認しましょう:

RewriteRule ^users/user/([a-z0-9-_]+) /beta/users.php?user=$1 [NC]

RewriteEngine onしかし、何が起こっているのかをコメントすることを常に忘れないでください。また、確認する必要がある URL は、再マップしようとしている存在しない URL です。(例: domain.com/users/user/name の末尾にスラッシュはありません。)

于 2013-04-06T17:53:00.430 に答える