如何处理php变量的301重定向

时间:2013-10-04 06:06:46

标签: apache .htaccess mod-rewrite redirect

我已经意识到我的.htaccess中的一些301重定向因为PHP变量而无效,但是在这里读了多篇关于如何克服它的帖子我得出的结论是我也是厚,以找出我需要使用的确切代码。

如果某些天才可以为我拼出那将会很棒的话。

这是一个不起作用的例子

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

请告诉我在apache上完成此工作所需的确切代码。我有大约100个网址,每个网址都有一个唯一的ID。

UPDATE 这是我的.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版本上线代码似乎杀了我的.htaccess文件,它有标准的wordpress信息,我怎么能将上面的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

1 个答案:

答案 0 :(得分:2)

使用Redirect指令无法匹配QUERY STRING。改为使用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