1

我已经意识到我的 .htaccess 中的一些 301 重定向由于 PHP 变量而不起作用,但是在这里阅读了多篇关于如何克服它的帖子我得出的结论是我太厚了,无法计算出我需要使用的确切代码。

如果某个天才可以为我拼出它,那就太棒了。

这是一个不起作用的例子

Redirect 301 /detail.php?prod_id=100 http://www.domain.com/new-url/

请让我知道在 apache 上进行这项工作所需的确切代码。我有大约 100 个网址,每个网址都有一个唯一的 ID。

更新这是我的 .htaccess 文件中现有的完整代码

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
Options +FollowSymLinks
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ http://www.domain.com/$1 [R=301,L] 

更新

好的,可以与我以前版本的 .htaccess 一起使用,但是由于我使用了我的网站的 wordpress 版本,该代码似乎杀死了我的具有标准 wordpress 信息的 .htaccess 文件,我如何将上述 301 代码放入其中?

# 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
4

1 回答 1

2

QUERY_STRING 无法使用Redirect指令匹配。改用 mod_rewrite :

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} (^|&)prod_id=100(&|$) [NC]
RewriteRule ^detail\.php$ http://www.domain.com/new-url/? [L,R=301,NC]

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^ http://www.domain.com%{THE_REQUEST} [R=301,L]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
# END WordPress
于 2013-10-04T06:09:53.870 回答