0

更新された .htaccess ファイルの簡単な確認が必要です:

RewriteEngine On
# Redirects errors to 404 page
ErrorDocument 404 /404.php

# Redirect index.php to site root
RewriteCond %{HTTP_HOST} ^mysite.com [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,NC]
RewriteRule ^index.php$ http://www.mysite.com/ [R=301,L]

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

# Remove .php
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://www.mysite.com/$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/.]+)$ $1.php [L]

それはかなり簡単です。

1 つ目は 404 リダイレクトです。
2 番目は www.mysite.com/index.php を www.mysite.com にリダイレクトします。3
番目はスラッシュを削除します。4 番目は .php 拡張子を削除します。5 番目は php を解決します。

誰かがこれに目を向けて、私のコードに簡単な健全性チェックをしてください。

4

1 に答える 1

1

ユーザーをリダイレクトし、すべての .htaccess ファイルを再度通過するため、以下は上部の方がより意味がある場合があります。

ここで実際に行っているのは、これらのいずれかがtrueブラウザに別の URL " [R=301]" から再度 Web サイトをロードするように指示している場合です。

# Redirect index.php to site root
RewriteCond %{HTTP_HOST} ^mysite.com [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301]
RewriteRule ^index.php$ http://www.mysite.com/ [R=301,L]

ディレクトリでない場合はスラッシュをドロップし、php が .php をドロップした場合はスラッシュなしですべてを解決します。

たとえば、ユーザーが特定の URL mysite.com/cake.php/(存在しない) でWeb サイトにアクセスすると、かなりの数のリダイレクトが発生することに注意してください。

mysite.com/cake.php/=> mysite.com/cake.php
mysite.com/cake.php=> mysite.com/cake
mysite.com/cake=>http://www.mysite.com/cake
http://www.mysite.com/cakeに解決http://www.mysite.com/cake.php- 存在しません
404=> http://www.mysite.com/404.php
http://www.mysite.com/404.php=>http://www.mysite.com/404

要約すると、それはあなたが探していることをします!

于 2012-09-18T10:54:08.717 に答える