将站点移动到WordPress后删除.php扩展名

时间:2014-11-13 14:41:42

标签: php wordpress apache .htaccess

我将旧网站从平面PHP文件移动到新的WordPress安装,并希望确保所有旧网址都正确重定向。例如,

旧网址:/va/apply.php 现在应该去: 新网址:/退伍军人事务/申请

我已经/ va正确地重定向到/退伍军人事务,但是无法从URL中删除.php。

我不确定这些是否需要一步完成?我已经尝试了我在网上找到的所有内容,并根据我在.htaccess中的有限知识进行了许多调整。

这也是在WordPress上,所以我可能会做一些与那里非常永久链接相冲突的事情。

这是我在许多其他人中尝试过的一些代码。

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

这应该将用户重定向到非PHP位置,但我一直得到404.这必须是我的代码和WordPress的组合'非常永久的。

2 个答案:

答案 0 :(得分:0)

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

我刚刚快速浏览了您所处的位置,以上情况可能有所帮助。将它添加到wordpress htaccess上面的所有条目,以便它可以先改变它... HTH

答案 1 :(得分:0)

好的,我终于让这个工作正常了。同样,我试图解决的问题是获取此URL:

/va/apply.php

正确地重定向到新的WordPress网址

/退伍军人-事务/应用

对我有用的是:

# This will remove the .php extension if it is not a directory, the file does not exist and it's not a WordPress specific admin page
RewriteCond %{REQUEST_URI} !/wp-(content|admin|includes)/ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php !-f
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ $1 [R=301,L]
# The basic redirect for /va
Redirect /va /veterans-affairs

我认为破坏它的是你在所有例子中找到的最后一行:

RewriteRule ^([^/.]+)$ $1.php [L]

我认为这是在WordPress可以做它需要做的事情之前尝试实际解析URL。

我还发现这个页面非常有见地

Hide .php Extension, Set Directory Index, Eliminate Duplicate Content, etc.