0

検索してみましたが、次の問題を解決するのに役立つものは何も見つかりませんでした。私はSOでこのリンクを見つけました:https ://stackoverflow.com/questions/1426056/good-htaccess-mod-rewrite-url-rewriting-tutorialしかし、その中のすべてのリンクは404デッドです。

私は自分のサイトのURLを美しくしようとしているので、どちらが機能www.mysite.com/aboutus.phpするかを示すように書き直されてwww.mysite.com/aboutusいます。

admin/cmsただし、CMSが機能しなくなるため、ディレクトリでこれを実行したくありません。無視してくださいwww.mysite.com/admin.php

私が使用しているコードは次のとおりです。

RewriteEngine On

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://mysite.com/$1 [R=301,L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://mysite.com/$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]

wwwこれはURLの先頭からも外れるため、正しく実行されていないと思います。

私もこのSOを見つけました:https ://stackoverflow.com/a/9565288/1343827これは私が望むことをするようですが、私はそれが私が望むことをするかどうか100%確信していません。

誰かが私がこのmodを書き直して.phpリンクの終わりから削除するのを手伝ってくれるなら、それは素晴らしいだろうadminディレクトリでこれを無視します。

4

1 に答える 1

1

URL の先頭から WWW も削除されるため、これが正しく行われているとは思えません。

これは、リダイレクトしようとしている URL がwww削除されているために発生しています。

# no "www." here -------------v
RewriteRule ^([^/]+)/$ http://mysite.com/$1 [R=301,L]

それらをすべて次のように変更してみてください。

RewriteRule ^([^/]+)/$ http://www.mysite.com/$1 [R=301,L]

私はまた、このSOを見つけました: https://stackoverflow.com/a/9565288/1343827これは私が望むことをしているようですが、私が望むことを100%確実に行うことはできないので、チュートリアルがおそらく最善です(そして、私が学んでいる間、いつもあなたたちのことを口説くのは嫌いです)。

そのリンクはあなたが望むことをします。一番下のものは必要ないだけですprofile.php。それは省略できます。しかし、このビット:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f

最後のルールが重要になる前に (あなたはそれを省略したようです)。ファイルをやみくもに書き換えるのではなく、拡張子が php のファイルが存在するかどうかを確認します (500 サーバー エラーが発生します ( https://stackoverflow.com/a/12463742/851273を参照)。

良いチュートリアルについては。私が見たほとんどすべてのチュートリアルは非常に一般的で、一般的なディレクティブとルール、およびいくつかのより一般的なアプリケーションについて説明しています。これはおそらく私が見た中で最高のものです: http://www.modrewrite.com/

mod_rewrite については、チュートリアルでカバーされていない多くの詳細と癖があり、それらのいくつかは非常に直感に反するように見えます。あなたはそれを使い続け、そのような状況に出くわし、そこから学ぶ必要があります.

于 2012-09-17T17:15:27.450 に答える