1

我正在尝试使用 .htaccess 文件重定向 301 删除我的 URL 上的 .php 扩展名,使其对搜索引擎友好,以保持“排名汁”,我几乎尝试了所有示例 - 它只是没有似乎不起作用。

以下是我已经尝试过的一些方法,但未成功:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

这是给出的最常见的解决方案,但没有任何反应,也没有任何变化。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php [L]

什么都没有发生,也没有变化。

RewriteEngine On
# RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
# RewriteRule (.*)\.php$ /$1 [L,R=301]
# RewriteRule (.*)/$ $1.php [L]

我得到一个未找到:在此服务器上找不到请求的 URL /AMENPTHOME/hostnd/3/9/9/399fc7b78/www/htdocs/web/dive-sites.php。

Amen 是我的主机,这个具体的真实示例中的文件dive-sites.php 位于根目录中。我的目标是:www.domain.com/dive-sites而不是www.domain.com/dive-sites.php使用重定向 301,因为这个 url 已经排名了一段时间。有人可以帮忙吗?

非常感谢,感谢所有帮助。

4

3 回答 3

2

如果我没有错过任何东西:

RewriteEngine On

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+)\.php[^\s]* [NC]
RewriteRule ^ /%1 [R=301,NE,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [QSA,NC,L]

请求/dive-sites.php将发出 301 重定向到/dive-sites,并附加查询字符串(如果有)。

请求/dive-sites将得到一个带有/dive-sites.phpas的 200 响应,并Content-Location附加查询字符串(如果有)。

于 2013-11-11T12:51:13.677 回答
1

试试这个:

重写引擎开启

重写规则 ^/(.+)(($|#)*(.*)) /$1.php$2

如果仅删除 .php 这将起作用。
$1 = 页面名称,例如foo
$2 = 记下主题标签或获取请求

例如。 <domain>/example ----> <domain>/example.php <domain>/example?get=this ----> <domain>/example.php?get=this <domain>/example#hash - ---> <域>/example.php#hash


于 2013-11-11T14:19:40.013 回答
0

试试这个代码来.php删除扩展:

RewriteEngine On

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

# To internally forward /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]
于 2013-11-11T11:57:03.083 回答