0

これは私が欲しいものです -

誰かが site.com/page.php または site.com/page または site.com/page/ に入ると、すべて同じように動作し、アドレスバーに表示される URL は site.com/page [ 私はしません拡張子と末尾のスラッシュのように]

また、不要なため、URL バーから www を削除したいと考えています。

これは私の現在の .htaccess ファイルです 書き換えルール -

RewriteEngine on
RewriteCond %{HTTP_HOST} ^site\.com
RewriteRule ^(.*)$ http://www.site.com/$1 [R=permanent,L] 

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

これにより、www と拡張子の問題は解決されますが、末尾のスラッシュの問題は解決されません。

しかし、もっと重要なことに、最近、site.com/blog に WordPress をインストールしましたが、そこにアクセスしようとすると、代わりに 404 ページにリダイレクトされます。すべての書き換えを削除すると機能します!

書き直しを台無しにしましたか?私は正規表現の忍者ではありません!

4

1 に答える 1

1

既存の .htaccess ファイルの先頭に、Wordpress ルールなどの既存のルールの上に以下を追加してみてください。

RewriteEngine on
RewriteBase /

#if the host is not site.com, e.g www.site.com
RewriteCond %{HTTP_HOST} !^site\.com$ [NC]
#then redirect to site.com e.g to remove the www
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L] 

#if the URL ends with a slash
RewriteCond %{REQUEST_URI} ^/(.+)/$
#redirect to URL without slash
RewriteRule . http://site.com/%1 [R=301,L] 

#skip wordpress site which starts with blog
RewriteCond %{REQUEST_URI} !^/blog [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
于 2011-12-15T20:39:12.230 に答える