목표 : 브라우저가 file-name.php로 재 작성되도록하려면 (존재하는 경우); 그렇지 않은 경우 파일 - name.html - 방문자가 다음 중 하나의 URL을 입력 여부 :.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
는 다음과 같은 규칙과 좋은 성공을했다 루트의 내 .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
하나에 다시 작성 - 파일이 존재 중. 작동하지 않습니다 무엇
: 거기에 더 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'로 다시 작성해야합니까? –