3

すべての URL を一様にきれいにしたい。つまり、私のすべての URL には拡張子も末尾のスラッシュもありません。また、誰かが.phpスラッシュまたは末尾のスラッシュを入力すると、その人は単純にクリーンな URL にリダイレクトされます。

例:

example.com/blog/file.php

example.com/blog/file/

両方にリダイレクトします

example.com/blog/file
4

3 に答える 3

4

これ.htaccessを試してください:

RewriteEngine on

#unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]

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

#redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php /$1 [R=301,L]
于 2011-06-12T18:36:21.417 に答える
3

私の Web ホストは最近 (2011 年 9 月)、Apache サーバーを新しいバージョンの Apache に更新したため、.htaccess拡張子のない URL を表示する古いコードが機能しなくなりました。かなりの量のコード (おそらく古いバージョンの Apache OS で動作していた) をコピーし、テストに失敗した後、次のコードが私のサーバーで動作するようであると判断できました。

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

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

それを試してみてください --Multiviewsそれを機能させるための重要な要素のようです。

于 2011-09-12T20:27:30.233 に答える