1

我正在将客户从自定义开发的 PHP 站点转移到 Wordpress。我现在正在使用 .htaccess 文件中的 301 重定向将旧位置移动到 Wordpress 中的新位置。其中一些正在工作,而另一些则没有(这意味着它提供了“旧”位置)。我在文件中有标准的“漂亮的永久链接”mod_rewrite 部分,然后是所有 301。

因此,具有像目录一样列出的原始位置(重写 index.php)的那些可以工作,而具有明确命名的 php 文件的那些则不能。例子:

这有效:

Redirect 301 /about/ http://deanchiropractic.com/about-us/

这样做(仍然为 dr-jon.php 服务):

Redirect 301 /about/dr-jon.php http://deanchiropractic.com/about-us/dr-jon-dean/

我尝试过更改顺序,尝试在 mod-rewrite 部分之前和之后使用 301,尝试使用和不使用 DirectoryIndex 行。我还验证了我正在编辑网络服务器根目录中的 .htaccess。

我宁愿让我的 .htaccess 工作,也不愿让 php 在所有未重定向的文件中执行 301 重定向(我已经尝试过,并验证了使用一个文件)。

以下是供参考的全部内容:

DirectoryIndex index.php index.html
Redirect 301 /about/dr-dean.php http://deanchiropractic.com/about-us/christophe-dean-dc/
Redirect 301 /about/dr-jon.php http://deanchiropractic.com/about-us/dr-jon-dean/
Redirect 301 /techniques/activator.php http://deanchiropractic.com/chiropractic-techniques/activator-method/
Redirect 301 /techniques/cox-technique.php http://deanchiropractic.com/chiropractic-techniques/cox-technique/
Redirect 301 /techniques/active-release.php http://deanchiropractic.com/chiropractic-techniques/active-release-technique/
Redirect 301 /community/dinner-talk.php http://deanchiropractic.com/get-healthy/
Redirect 301 /community/refer.php http://deanchiropractic.com/get-healthy/
Redirect 301 /resources/forms.php http://deanchiropractic.com/forms/
Redirect 301 /resources/faq.php http://deanchiropractic.com/faq/
Redirect 301 /resources/articles/low-back-pain-relief.php http://deanchiropractic.com/low-back-pain-relief/
Redirect 301 /resources/articles/about-the-activator-method.php http://deanchiropractic.com/achieve-wellness-with-the-activator-method/
Redirect 301 /resources/articles/spinal-disc-treatment.php http://deanchiropractic.com/spinal-disc-treatment/
Redirect 301 /resources/articles/headache-relief-benefits.php http://deanchiropractic.com/headache-relief/
Redirect 301 /resources/articles/carpal-tunnel-relief.php http://deanchiropractic.com/carpal-tunnel-relief/
Redirect 301 /resources/articles/neck-pain-relief.php http://deanchiropractic.com/neck-pain-relief/
Redirect 301 /testimonials.php http://deanchiropractic.com/reviews/
Redirect 301 /contact.php http://deanchiropractic.com/contact-us/
Redirect 301 /about/    http://deanchiropractic.com/about-us/
Redirect 301 /techniques/   http://deanchiropractic.com/chiropractic-techniques/
Redirect 301 /community/    http://deanchiropractic.com/get-healthy/
Redirect 301 /resources/    http://deanchiropractic.com/forms/
Redirect 301 /resources/articles/   http://deanchiropractic.com/category/articles/
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

我在这个网站上进行了广泛的搜索,但找不到与我的确切问题匹配的内容……尽管我在此过程中学到了很多关于 .htaccess 的知识(仍然是 n00b tho)。谢谢....

4

1 回答 1

0

mod_alias 和 mod_rewrite 可能会相互干扰,因为它们都应用于处理管道中的相同 URL。在这种情况下,可能是 URI 已更改,并且 mod_alias (通过Redirect指令)标记了重定向,但随后 mod_rewrite 做了它的事情并重写 URI 以通过 路由index.php,但 URI 被标记为重定向,所以在在管道的末尾,您有一个作为重定向发送的损坏的 URI。您可以通过仅使用 mod_rewrite 并使用L标志来避免这种情况,这样就不会应用 wordpress 规则:

RewriteEngine On
RewriteRule ^/?about/dr-dean.php http://deanchiropractic.com/about-us/christophe-dean-dc/ [L,R=301]
RewriteRule ^/?about/dr-jon.php http://deanchiropractic.com/about-us/dr-jon-dean/ [L,R=301]
RewriteRule ^/?techniques/activator.php http://deanchiropractic.com/chiropractic-techniques/activator-method/ [L,R=301]

ETC...

于 2012-10-19T20:44:00.177 回答