1

現在、Windows 7 で wamp を使用しています。明らかに URL をクリーンアップしたいと思います。現在の構文とそうでないものを見つけようとしましたが、わかりませんでした。

現在のパスは localhost/rs/index.php です。localhost
/rs/user に移動すると 404 が表示されますが、localhost/rs/ では index.php ページが表示されます。

これは、wamp の www ディレクトリにある .htaccess ファイルにあるものです。

RewriteEngine On
RewriteRule ^/$ index.php
RewriteRule ^/([a-z]+)$ index.php?page=$1
RewriteRule ^/([a-z]+)/$ index.php?page=$1

行のコメントを外しました

LoadModule rewrite_module modules/mod_rewrite.so

Apache の httpd.conf ファイル内

どうしたの?.htaccess ファイルが間違った場所にありますか? 私の構文は間違っていますか?

ありがとう!

4

3 に答える 3

2

フォルダ.htaccess/rs入れて試してみてください

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9]*)/?$ index.php?page=$1 [L]

これがお役に立てば幸いです

于 2012-10-12T06:42:08.047 に答える
1

.htaccessファイルは、index.phpと同じディレクトリの「/rs」フォルダに配置する必要があります。

有効な書き換えログを試してみましたが、アクセスしようとすると、そこで見たものが表示されますlocalhost/test/user

:: 1 --- [2012年10月12日:09:53:11 +0400] [localhost / sid#68a898] [rid#1cc4d48 / initial](3)[perdir D:/ Development / htdocs /test/]ストリップディレクトリごとのプレフィックス:D:/ Development / htdocs / test / user-> user

:: 1 --- [12 / Oct / 2012:09:53:11 +0400] [localhost / sid#68a898] [rid#1cc4d48 / initial](3)[perdir D:/ Development / htdocs /test/]適用パターン'^/$'からuri'ユーザー'

:: 1 --- [2012年10月12日:09:53:11 +0400] [localhost / sid#68a898] [rid#1cc4d48 / initial](3)[perdir D:/ Development / htdocs /test/]ストリップディレクトリごとのプレフィックス:D:/ Development / htdocs / test / user-> user :: 1 --- [12 / Oct / 2012:09:53:11 +0400] [localhost / sid#68a898] [rid#1cc4d48 /初期](3)[perdir D:/ Development / htdocs /test/]パターン'^/([az] +)$'をuri'user'に適用

:: 1 --- [2012年10月12日:09:53:11 +0400] [localhost / sid#68a898] [rid#1cc4d48 / initial](3)[perdir D:/ Development / htdocs /test/]ストリップディレクトリごとのプレフィックス:D:/ Development / htdocs / test / user-> user

:: 1 --- [12 / Oct / 2012:09:53:11 +0400] [localhost / sid#68a898] [rid#1cc4d48 / initial](3)[perdir D:/ Development / htdocs /test/]適用パターン'^/([az] +)/ $'to uri'user'

:: 1 --- [2012年10月12日:09:53:11 +0400] [localhost / sid#68a898] [rid#1cc4d48 / initial](1)[perdir D:/ Development / htdocs /test/]パスD:/ Development / htdocs / test/userを介して

最初の行から、mod_rewriteが「/」で始まるストリッピングを行っており、「/user」ではなく「user」を取得していることは明らかです。したがって、書き換えルールは「/」なしで記述する必要があります。つまり、次のようになります。

RewriteEngine On
RewriteRule ^$ index.php
RewriteRule ^([a-z]+)/?$ index.php?page=$1

また、「/?」と書くことで最後の2つのルールを組み合わせたことにも注意してください。つまり、URLの最後にある「/」記号はオプションです。

リライトログをオンにするには、httd.confファイルに次のように設定します。

#
# Logging for mod_rewrite
# Use RewriteLogLevel 3 only for debug purposes
# Normally use RewriteLogLevel 0
#
<IfModule rewrite_module>
    RewriteLogLevel 3
    RewriteLog "logs/rewrite.log"
</IfModule>

そうすれば、ログはlogs/rewrite.logファイルに作成されます。そして、これは通常、何がうまくいかないかを調べるための最良の方法です。

于 2012-10-12T06:06:47.490 に答える
0

サブフォルダーで実行している場合は、この行を後に追加する必要がありますRewriteEngine On

RewriteBase /rs

また、Apacheの仮想ホストセクションにこの値があることを確認してください

AllowOverride All
于 2012-10-12T06:00:24.250 に答える