301将.php重定向到非php页面

301将.php重定向到非php页面,php,regex,.htaccess,mod-rewrite,http-status-code-301,Php,Regex,.htaccess,Mod Rewrite,Http Status Code 301,目前,我的站点设置为将.php重定向到非php版本。问题是当我检查时,它对两个页面都发出了“200 OK”,我知道这对谷歌来说是一个“不”字 我想将.php页面重定向到非php页面。这是同一个页面,我已经向页面添加了规范链接,反映了非.php页面 如何设置301?我目前正在使用.htaccess和以下代码处理.php以直接指向非.php页面: # Remove filename extension <IfModule mod_rewrite.c> RewriteEngine

目前,我的站点设置为将.php重定向到非php版本。问题是当我检查时,它对两个页面都发出了“200 OK”,我知道这对谷歌来说是一个“不”字

我想将.php页面重定向到非php页面。这是同一个页面,我已经向页面添加了规范链接,反映了非.php页面

如何设置301?我目前正在使用.htaccess和以下代码处理.php以直接指向非.php页面:

# Remove filename extension
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^([^\.]+)$ $1.php [QSA,NC,L]
</IfModule>
#删除文件扩展名
重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-D
RewriteCond%{REQUEST_FILENAME}.php-f
重写规则^([^\.]+)$$1.php[QSA,NC,L]

如何解决200 OK to 301重定向到.php页面(注意它们是同一页面)的问题?

您需要一个附加规则:

# Remove filename extension
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # To externally redirect /dir/abc.php to /dir/abc
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC]
    RewriteRule ^ /%1 [R=301,L,NE]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.+?)/?$ $1.php [QSA,NC,L]
</IfModule>
#删除文件扩展名
重新启动发动机
重写基/
#将/dir/abc.php外部重定向到/dir/abc
重写cond%{THE_REQUEST}^[A-Z]{3,}\s/+(.+?)\.php[\s?][NC]
重写规则^/%1[R=301,L,NE]
重写cond%{REQUEST_FILENAME}-D
RewriteCond%{REQUEST_FILENAME}.php-f
重写规则^(+?)/?$$1.php[QSA,NC,L]
将此规则置于现有规则之前


这将从外部将所有
.php
文件重定向到非
.php
版本。因此,谷歌不会为你的
.php
文件编制索引。

你能用整个代码块重新发送它的外观吗?我不完全理解它需要去哪里?谢谢,谢谢。我只是尝试实施,但没有成功。有些文件位于目录中,其他文件则不位于目录中…这有关系吗?是的!成功了。非常感谢你。你帮了大忙!既然我有你在这里,你知道如何重定向到所有小写的.htaccess中的任何url吗?