1

私は、これを機能させる方法を理解しようとして、何日も質問と回答を調べてきました。

これまでのところ、URL を変更することはできますが、ページが読み込まれません。

私は取らなければならない

http://www.mysite.com/index.php?mode=about

そして、それを次のように表示します

http://www.mysite.com/about/

これまでのところ、次のコードがあります。

RewriteEngine on
RewriteCond %{QUERY_STRING} ^mode=(.*)
RewriteRule ^ http\:\/\/\www.mysite.com\/%1? [R=301,L]

RewriteRule /(.*) /index.php?mode=%1 [L]

私は物事を何度も変更しましたが、何も変更しませんでした。ほとんどのサイトは、301 リダイレクトは必要ないと言っているようですが、何も機能しません。

4

5 に答える 5

0

(あなたの)例では、からmysite.com/index.php?mode=aboutに適切にルーティングすると、次に来るもの(index.py/index.html/etc)を見つけるためmysite.com/aboutに見ていきます。mysite.com/about/

には何もないため/about/、404エラーが発生します。

/about/mod_rewriteを使用して、目的のページを実際に表示するための処理を行わずに、達成しようとしていることを正確に実行できるとは思いません。

http://www.noupe.com/php/10-mod_rewrite-rules-you-should-know.html

ファイルシステムが常に優先されることを忘れないでください

サーバー上のファイルシステムは、書き換えられたURLよりも常に優先されます。たとえば、「services」という名前のディレクトリがあり、そのディレクトリ内に「design.html」というファイルがある場合、URLを「<ahref="http://domain.com/services」にリダイレクトすることはできません。 「rel="nofollow">http://domain.com/services」。何が起こるかというと、Apacheは「services」ディレクトリに入り、書き換え命令を認識しません。

これを修正するには、ディレクトリの名前を変更するだけです(最初または最後にアンダースコアを追加するのが簡単な方法です)。

于 2013-03-01T02:51:49.610 に答える
0

問題を解決しました。すべての助けをありがとう。


#<IfModule mod_rewrite.c>

#RewriteEngine on

#RewriteCond%{REQUEST_FILENAME}!-f

#RewriteCond%{REQUEST_FILENAME}!-d

#</ IfModule>

オプション+FollowSymLinks

RewriteEngineをオンにします

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

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

于 2013-03-01T09:28:26.950 に答える
0

これを使用できます:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME}  -d
RewriteRule  ^.*$  -  [L]

RewriteRule ^([^/]+)/$  /index.php?mode=$1 [L]

最初はまだ他のフォルダーにアクセスできる場所。

于 2013-04-06T04:25:17.137 に答える
0

私は取らなければならない

http://www.mysite.com/index.php?mode=about

そして、それを次のように表示します

http://www.mysite.com/about/

人々が望む非常に一般的な 2 種類のルールがあり、あなたのステートメントは異なるルールを必要とする 2 つの方法で解釈できます。に実際の操作スクリプトがあるというあなたの声明を解釈しますがhttp://www.mysite.com/index.php?mode=about、ユーザーにその「醜い」URL を入力させる代わりに、ユーザーが に入るときにその URL が提供されるようにしますhttp://www.mysite.com/about/。これを行うには、次のようにします。

RewriteRule ^about/?$ /index.php?mode=about [L]

誤解を招く可能性があるため、(1) ユーザーがブラウザーに入力する内容と、(2) ユーザーに提供する実際のファイルは何かということを述べるのが最善です。

于 2013-03-01T03:03:05.160 に答える
0

行番号 2 と 3 が必要だとは思いませんが、$ の代わりに % が使用されているようです。試してください:

RewriteEngine on
RewriteRule ^([^\/]+) /index.php?mode=$1 [L]
于 2013-03-01T03:26:36.420 に答える