目的:ファイル名が存在する場合、ファイル名.phpに書き換えます。.htaccessファイルuriをfile-name.htmlまたはfile-name.phpのいずれかに書き換えます。どちらかが存在する場合は
http://mydomain.com/file-name
http://mydomain.com/file-name.html
http://mydomain.com/file-name.php
次のルールとの良好な成功を収めて、次のいずれかのように訪問者がURLを入力したかどうか - それ以外のリターンファイル名.htmlルートの.htaccessファイルで:
# REWRITE FILE URI TO file.php IF EXISTS
Options Indexes +FollowSymLinks +MultiViews
Options +ExecCGI
RewriteEngine on
RewriteBase/
# parse out basename, but remember the fact
RewriteRule ^(.*).html$ $1 [C,E=WasHTML:yes]
# rewrite to document.php if exists
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [S=1]
# else reverse the previous basename cutout
RewriteCond %{ENV:WasHTML} ^yes$
RewriteRule ^(.*)$ $1.html
しかし、それ以来、私は既存のウェブサイトと一緒にrootでWPをインストールしており、これらのルールはもはや機能していません。
何WORK:file-name
はfile-name.html
またはfile-name.php
のいずれかに書き換えている - ファイルが存在している方。
WHATは動作しません。そこにはfile-name.html
がなく、file-name.php
がある場合でもfile-name.html
はfile-name.php
に書き換えされていません。また、file-name.php
はfile-name.php
がない場合はfile-name.html
に書き換えられませんが、file-name.html
があります。
全体の.htaccessそれが今あるよう:
# BEGIN WP MULTISITE RULES
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule^- [L]
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WP MULTISITE RULES
# REWRITE FILE URI TO file.php IF EXISTS
Options Indexes +FollowSymLinks +MultiViews
Options +ExecCGI
RewriteEngine on
RewriteBase/
# parse out basename, but remember the fact
RewriteRule ^(.*).html$ $1 [C,E=WasHTML:yes]
# rewrite to document.phtml if exists
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [S=1]
# else reverse the previous basename cutout
RewriteCond %{ENV:WasHTML} ^yes$
RewriteRule ^(.*)$ $1.html
任意のアドバイス?
はい、私はWPより上のルールを移動し、再び動作します。ほとんど。つまり、 'file-name'は 'file-name.html'または 'file-name.php'のいずれかを返します。存在する場合、 'file-name.html'は 'file-name.php'を返します。しかし、 'file-name.html'と 'file-name.php'だけがない場合、 'file-name.php'は404を返します。その場合、 'file-name.php'を 'file-name.html'に書き換える原因は何でしょうか? –